好的,假设我的应用程序向内存发出(x86)指令,使页面可执行等等.有没有办法改变un-JITted方法的方法存根指向我发出的指令流?
例如:
假设我在内存中创建了一个x86指令流,它可以执行任意操作.现在,进一步假设我有一个方法'int Target()'.我还没有打电话,所以还没有编译.有没有办法:
获取指向Target的存根的指针
使它指向我发出的指令流.
我意识到.Net的几乎每一个安全功能都是为了防止像这样的劫持.但是,通过托管API可以实现吗?
这可以通过Profiling API实现.我从未使用它,但它在TypeMock中用于类似的目的.
编辑:我认为在MSDN博客上有一个很好的帖子,将去寻找它.
编辑2:Doh,第一次击中!
是的,你可以做到!
mscorjit的钩子getJit方法.每当有任何方法需要Jitting时,你都会被问到.你可以通过你想要的任何东西.一些.net保护器就像这样工作.