首页
社区
课程
招聘
[旧帖] [求助]关于NtOpenProcess inlineHOOK的恢复 0.00雪花
发表于: 2012-11-4 02:39 1668

[旧帖] [求助]关于NtOpenProcess inlineHOOK的恢复 0.00雪花

2012-11-4 02:39
1668
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次后蓝屏,不知道怎么回事,请大牛们指教。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 179
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不是很懂!但我支持你
2012-11-4 02:43
0
雪    币: 778
活跃值: (208)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
3
目测 把返回地址压栈,其实是返回到805cc605,应该是805cc603吧
2012-11-4 08:03
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
805cc603这个地址的JMP语句是往前跳的,所以我直接返回到805cc605
2012-11-4 09:54
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
谁来帮我解答下啊
2012-11-4 15:19
0
雪    币: 7577
活跃值: (5417)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
mov    eax,PsLookupProcessByProcessId_Addr //写入PsLookupProcessByProcessId的地址
    jmp    eax

------------------------
mov    eax,PsLookupProcessByProcessId_Addr //写入PsLookupProcessByProcessId的地址
    call    eax
2012-11-5 00:57
0
雪    币: 179
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看不懂呢呵呵
2012-11-5 01:59
0
雪    币: 48
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
CALL和jmp应该差不多吧,反正都是转到那个地址,区别很大么?
2012-11-5 09:35
0
雪    币: 154
活跃值: (91)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
9

jmp:esp=esp
call:esp=esp-4
2012-11-5 12:34
0
游客
登录 | 注册 方可回帖
返回
//