首页
社区
课程
招聘
[求助]有关HOOK NtOpenProcess的问题!
发表于: 2011-3-10 21:11 4928

[求助]有关HOOK NtOpenProcess的问题!

2011-3-10 21:11
4928
比如一个被做过 SSDT HOOK 的 NtOpenProcess 当前的反汇编代码为
f8bee312 55              push    ebp
f8bee313 8bec            mov     ebp,esp
f8bee315 51              push    ecx
f8bee316 c745fc00000000  mov     dword ptr [ebp-4],0
f8bee31d 8b4514          mov     eax,dword ptr [ebp+14h]
f8bee320 8b08            mov     ecx,dword ptr [eax]

我想用 inline hook 的方法来跳回原NtOpenProcess的地址。该怎么做呢?
一般 inline hook 都是头5个字节,而这个被 HOOK的函数只有4个字节,请哪位大侠赐教。实在感谢了。说思路也可以。但最好上几行代码。跪谢。。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
2
1+2+1+7 = 11
前5个字节HOOK用,后面带6个nop。
Unhook的时候你还原那11个字节就是了。
我是新手,如有不对,请指正
2011-3-10 23:01
0
雪    币: 216
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
如果后6个字节 nop掉估计会破坏指令的。 不知道还有没有别的方法呢??
那位兄弟给指点一下?
2011-3-11 10:01
0
雪    币: 88
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
mov     dword ptr [ebp-4],0
这句话只是变量初始化为0  占用了太多 空间。试试看能否缩短?

或者 先利用jmp跳走 再跳回来?
我也是刚学不久。求指教~
2011-3-11 10:30
0
雪    币: 216
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
F7A5A312                55                push   ebp
F7A5A313                8BEC                mov    ebp, esp
F7A5A315                51                push   ecx
F7A5A316                C745 FC 00000000                mov    dword ptr [ebp-4], 0   
F7A5A31D                8B45 14                mov    eax, dword ptr [ebp+14]               
F7A5A320                8B08                mov    ecx, dword ptr [eax]                  
F7A5A322                3B0D 80A4A5F7                cmp    ecx, dword ptr [F7A5A480]     
F7A5A328                75 1B                jne    F7A5A345                             
F7A5A32A                8B15 80A4A5F7                mov    edx, dword ptr [F7A5A480]      
F7A5A330                52                push   edx                                    
F7A5A331                68 00A3A5F7                push   0F7A5A300
F7A5A336                E8 2B000000                call   F7A5A366
F7A5A33B                83C4 08                add    esp, 8
F7A5A33E                B8 220000C0                mov    eax, 0C0000022
F7A5A343                EB 1B                jmp    F7A5A360
F7A5A345                8B45 14                mov    eax, dword ptr [ebp+14]
F7A5A348                50                push   eax
F7A5A349                8B4D 10                mov    ecx, dword ptr [ebp+10]
F7A5A34C                51                push   ecx
F7A5A34D                8B55 0C                mov    edx, dword ptr [ebp+C]
F7A5A350                52                push   edx
F7A5A351                8B45 08                mov    eax, dword ptr [ebp+8]
F7A5A354                50                push   eax
F7A5A355                FF15 84A4A5F7                call   dword ptr [F7A5A484]         
F7A5A35B                8945 FC                mov    dword ptr [ebp-4], eax
F7A5A35E                33C0                xor    eax, eax
F7A5A360                8BE5                mov    esp, ebp
F7A5A362                5D                pop    ebp
F7A5A363                C2 1000                retn   10
F7A5A366                FF25 80A3A5F7                jmp    dword ptr [F7A5A380]

这就是上面这个HOOK后的函数的完整反汇编代码。没找到有什么地方可以inline hook 的啊。
2011-3-11 11:59
0
雪    币: 270
活跃值: (97)
能力值: ( LV8,RANK:140 )
在线值:
发帖
回帖
粉丝
6
这里还管破坏?你HOOK的时候都已经jmp到你的函数去了,后面的指令都不执行了。
你只要把这11个字节的原始内容保存一下,到Unhook的时候还原就是了。
2011-3-11 13:23
0
雪    币: 216
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
哦。。。恩。也是啊。。。。然后直接就跳回原函数了。
2011-3-11 14:17
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
应该可以这样做,先分配内存保存那11个字节,然后再后面加一个jmp指令到F7A5A31D,调用的时候直接call分配到的内存地址。
2011-3-11 15:12
0
雪    币: 216
活跃值: (57)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
调用的时候直接call分配到的内存地址   这个是什么意思??
2011-3-11 22:46
0
游客
登录 | 注册 方可回帖
返回
//