能力值:
( LV8,RANK:140 )
|
-
-
2 楼
1+2+1+7 = 11
前5个字节HOOK用,后面带6个nop。
Unhook的时候你还原那11个字节就是了。
我是新手,如有不对,请指正
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
如果后6个字节 nop掉估计会破坏指令的。 不知道还有没有别的方法呢??
那位兄弟给指点一下?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
mov dword ptr [ebp-4],0
这句话只是变量初始化为0 占用了太多 空间。试试看能否缩短?
或者 先利用jmp跳走 再跳回来?
我也是刚学不久。求指教~
|
能力值:
( 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 的啊。
|
能力值:
( LV8,RANK:140 )
|
-
-
6 楼
这里还管破坏?你HOOK的时候都已经jmp到你的函数去了,后面的指令都不执行了。
你只要把这11个字节的原始内容保存一下,到Unhook的时候还原就是了。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
哦。。。恩。也是啊。。。。然后直接就跳回原函数了。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
应该可以这样做,先分配内存保存那11个字节,然后再后面加一个jmp指令到F7A5A31D,调用的时候直接call分配到的内存地址。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
调用的时候直接call分配到的内存地址 这个是什么意思??
|
|
|