传说中的路痴 发表于 2012-10-17 20:39:12

一个关于push ret HOOK的问题随记一下。

在学习内核HOOK的问题,发现自已的基础就是XX,记录一下!

曾经的问题:

//加入pushad 及popad 这样会不会影响到JMP地址各个寄存器,
//因为以上代码和JMP到的地址代码为同一个函数。会吗?
//以上汇编代码处理后蓝屏,应该是堆栈不平问题。
问题:如何保证破坏后堆栈平衡?//正常   
lkd> u ObCheckObjectAccess l10
nt!ObCheckObjectAccess:
805c119c 8bff            mov   edi,edi
805c119e 55            push    ebp
805c119f 8bec            mov   ebp,esp
805c11a1 83ec10          sub   esp,10h
805c11a4 8b4508          mov   eax,dword ptr
805c11a7 56            push    esi
805c11a8 57            push    edi
805c11a9 ff7514          push    dword ptr
805c11ac 8b78f0          mov   edi,dword ptr
805c11af 8d4df0          lea   ecx,
805c11b2 51            push    ecx
805c11b3 8d4dfc          lea   ecx,
805c11b6 33f6            xor   esi,esi
805c11b8 51            push    ecx
805c11b9 50            push    eax
805c11ba 8975f4          mov   dword ptr ,esi

//HOOK后   
push    0AB248D18h       //我修改此地址进入我的函数后,直接JMP 805c11a9 以达到目地。   
RET
in      al,dx
adc   byte ptr ,cl
805c11a9 push    dword ptr
805c11ac mov   edi,dword ptr
805c11af lea   ecx,
805c11b2push    ecx



__declspec(naked) void myhook()
{
__asm
{
//模拟ObCheckObjectAccess函数头如下   
pushad
mov   edi,edi
push    ebp
mov   ebp,esp
sub   esp,10h
mov   eax,dword ptr
push    esi
push    edi
popad
//跳转到JMP 805c11a9   
mov ebx,ObCheckObjectAccess
       add ebx,0xd
jmp ebx
         
   }
}

xiaoxu 发表于 2013-5-27 12:53:25

顶顶顶顶顶顶顶顶顶顶

一台电脑闯天下 发表于 2019-1-9 07:46:56

666666666666666666

风中彩虹 发表于 2019-4-14 13:50:02

谢谢分分享,666666666666
页: [1]
查看完整版本: 一个关于push ret HOOK的问题随记一下。