最近在写一个HOOK天龙八部lua字符串的工具,发现用C++写游戏要报错
006CAECC |. 8B16 mov edx,dword ptr ds:[esi]
006CAECE |. 83C4 10 add esp,0x10
006CAED1 |. 8BCE mov ecx,esi
006CAED3 |. FF52 38 call dword ptr ds:[edx+0x38]
006CAED6 |. 8B10 mov edx,dword ptr ds:[eax]
006CAED8 |. 8D8D F8FEFFFF lea ecx,[local.66]//将ebx地址传给ecx
006CAEDE |. 51 push ecx //lua字符串
006CAEDF |. 52 push edx
006CAEE0 |. FF15 00C48100 call dword ptr ds:[0x81C400] ; lua_dostring
上面任意地方HOOK,ebx的值就是lua字符串。
我看到易语言模块里面有个超级HOOK能获取到寄存器的值,而且游戏不报错,哪位大神说说他是怎么HOOK的,我想用C++来实现
下面是魔鬼作坊VIP模块里面的超级HOOK,我用OD研究了下,这是他inline HOOK内部 的代码:
04DC0000 8905 0000600F mov dword ptr ds:[0xF600000],eax
04DC0006 890D 0400600F mov dword ptr ds:[0xF600004],ecx
04DC000C 8915 0800600F mov dword ptr ds:[0xF600008],edx
04DC0012 891D 0C00600F mov dword ptr ds:[0xF60000C],ebx
04DC0018 8925 1000600F mov dword ptr ds:[0xF600010],esp
04DC001E 892D 1400600F mov dword ptr ds:[0xF600014],ebp
04DC0024 8935 1800600F mov dword ptr ds:[0xF600018],esi
04DC002A 893D 1C00600F mov dword ptr ds:[0xF60001C],edi
04DC0030 60 pushad
04DC0031 68 AA893000 push 0x3089AA
04DC0036 68 F459DC0B push 0xBDC59F4
04DC003B 68 16C30000 push 0xC316
04DC0040 A1 0000610F mov eax,dword ptr ds:[0xF610000]
04DC0045 50 push eax
04DC0046 E8 3D8FFC70 call USER32.SendMessageA
04DC004B 61 popad
04DC004C 8D8D F8FEFFFF lea ecx,dword ptr ss:[ebp-0x108]
04DC0052 - E9 87AE90FB jmp Game.006CAEDE
04DC0057 0000 add byte ptr ds:[eax],al
04DC0059 0000 add byte ptr ds:[eax],al
04DC005B 0000 add byte ptr ds:[eax],al
哪位大神帮帮忙转换成C++,谢谢!
[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!