windows内核开发中遇到一点关于汇编的问题,求高手解答。
先说下自己的设计思路我在disablepatchgurad的过程中 要用到一个非文档化的函数,有两个解决方案,一个是在应用层下载符号表来找,二个是在内核注册个dpc例程,然后通过回溯获得
我选择第二种(总觉得一个内核程序还是尽量少依靠R3程序比较好)
既然思路有了 那么就是实现了 我的想法是 进入DPC例子后 当前ESP值肯定保存的是这个DPC完成之后的返回值
那么我有
PVOID testadd=NULL
__asm
{
mov eax,esp
mov testadd,eax
}
当我编译调试后 发现最后testadd中的值是堆栈地址 而不是该地址中的值
于是我又想
__asm
{
pop eax
mov testadd,eax
}
结果还是不行
本人没深入接触过汇编,特来求助
希望大神能解答下
附图
图片中红色箭头指向的是当前堆栈栈顶
黑色箭头指向的是我想要的值
红色方框是我写的汇编代码。
求大神指点 该怎么写!感激不尽