-
-
[旧帖]
[求助]关于NtOpenProcess inlineHOOK的恢复
0.00雪花
-
发表于:
2012-11-4 02:39
1661
-
[旧帖] [求助]关于NtOpenProcess inlineHOOK的恢复
0.00雪花
HOOK前:
nt!NtOpenProcess+0x1f4:
805cc5f0 e885550200 call nt!SeDeleteAccessState (805f1b7a)
805cc5f5 ebac jmp nt!NtOpenProcess+0x1a7 (805cc5a3)
805cc5f7 8d45dc lea eax,[ebp-24h]
805cc5fa 50 push eax
805cc5fb ff75d4 push dword ptr [ebp-2Ch]
805cc5fe e8db7a0000 call nt!PsLookupProcessByProcessId (805d40de)
805cc603 ebde jmp nt!NtOpenProcess+0x1e7 (805cc5e3)
805cc605 8d45e0 lea eax,[ebp-20h]
HOOK后:
805CC5F0 E8 85550200 call 805F1B7A
805CC5F5 EB AC jmp 805CC5A3
805CC5F7 8D45 DC lea eax, [ebp-24]
805CC5FA 50 push eax
805CC5FB FF75 D4 push dword ptr [ebp-2C]
805CC5FE E8 3F92F031 call B24D5842 //这里HOOK4个字节
805CC603 EB DE jmp 805CC5E3
805cc605 8d45e0 lea eax,[ebp-20h]
我的恢复办法是在805CC5F7处写入一个jmp,jmp到我自己的函数里
函数如下:
__declspec(naked) VOID inline_NtOpenProcess1() //内联HOOK。
{
__asm
{
lea eax,[ebp-24h]
push eax
push dword ptr [ebp-2Ch]
push p1_ReturnNtOpenProcessAddr //把返回地址压栈,其实是返回到805cc605
mov eax,PsLookupProcessByProcessId_Addr //写入PsLookupProcessByProcessId的地址
jmp eax
}
}
在双机调试系统里,加载驱动后,只要虚拟机里面任意操作下,马上就会在上个函数入口断下,继续运行,然后又会断下,执行N次后蓝屏,不知道怎么回事,请大牛们指教。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课