目标程序中有一未导出函数,我想hook掉,好取其参数信息.
目标函数形式如下:
10005F40 /. 55 push ebp ; 数据,长度
10005F41 |. 8BEC mov ebp, esp
10005F43 |. 83EC 08 sub esp, 8
10005F46 |. 56 push esi
10005F47 |. C745 F8 CCCCC>mov dword ptr [ebp-8], CCCCCCCC
10005F4E |. C745 FC CCCCC>mov dword ptr [ebp-4], CCCCCCCC
10005F55 |. 894D FC mov dword ptr [ebp-4], ecx
...
10005FEB |. 83C4 08 add esp, 8
10005FEE |. 3BEC cmp ebp, esp
10005FF0 |. E8 EBE30000 call 100143E0
10005FF5 |. 8BE5 mov esp, ebp
10005FF7 |. 5D pop ebp
10005FF8 \. C2 0C00 retn 0C
调用部分:
0039897E |. 8B8D 60FFFFFF |mov ecx, dword ptr [ebp-A0]
00398984 |. 51 |push ecx
00398985 |. 8B55 84 |mov edx, dword ptr [ebp-7C]
00398988 |. 52 |push edx
00398989 |. 8B85 54FFFFFF |mov eax, dword ptr [ebp-AC]
0039898F |. 50 |push eax
00398990 |. 8B4D EC |mov ecx, dword ptr [ebp-14]
00398993 |. 8B11 |mov edx, dword ptr [ecx]
00398995 |. 8B42 50 |mov eax, dword ptr [edx+50]
00398998 |. 8B4D EC |mov ecx, dword ptr [ebp-14]
0039899B |. 8B11 |mov edx, dword ptr [ecx]
0039899D |. 8B4A 50 |mov ecx, dword ptr [edx+50]
003989A0 |. 8B00 |mov eax, dword ptr [eax]
003989A2 |. FF50 04 |call dword ptr [eax+4] //call 10005F40
现在想hook 10005F40 ,我已经作了dll注入,在注入的同时去更改10005F40的前5个字节,将其jmp到我的代码段,这个过程都成功了,因为我加的outputdebugstring可以看到信息.
然后将5个字节还原,再去call真正的10005F40,但是就出现错误了,后来我发现可能是ecx的值不对,输出看一下,果然在我的函数一开始ecx的值为0,我不明白这个ecx怎么会变成0的??
高手帮小弟分析下吧。
谢谢啦
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课