一个关于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
}
}
顶顶顶顶顶顶顶顶顶顶 666666666666666666 谢谢分分享,666666666666
页:
[1]