为什么我hook某些地方是call 跳转?
本帖最后由 as614001 于 2021-8-5 13:39 编辑发现hook call 发现一些地方只能是 call 跳转地址;
正常应该是 jmp 跳转地址; 是因为有保护吗?
描述的不准确:就是我hook代码用的其实jmp 但是到OD看变成了 call
没遇到过,顶一下 用CALL用JMP,都能达到跳转的目的。JMP的话,需要自己跳回来。call的话直接retn就完事。。只要不破坏运行就可以了。 没有ret的call就相当于jmp zjchxj 发表于 2021-8-5 12:50
用CALL用JMP,都能达到跳转的目的。JMP的话,需要自己跳回来。call的话直接retn就完事。。只要不破坏运行就 ...
问题 我hook用的jmp 到od 一看变成了 call
call和jmp的字节码根本不一样,求助应该上代码,至少上张图吧 起码把hook时修改的代码部分贴出来。 你自己写的E8和E9,编译器不可能给你改了呀。
建议直接上关键代码,个人感觉你可能。。。OD里定位错位置了。{:1_918:} Tugou 发表于 2021-8-5 16:53
你自己写的E8和E9,编译器不可能给你改了呀。
建议直接上关键代码,个人感觉你可能。。。OD里定位错位置了 ...
BYTE jmpCode = { 0 };
jmpCode = 0xE9;//jmp 的字节码
//新跳转指令中的数据=跳转的地址-原地址(HOOK的地址)-跳转指令的长度
*(DWORD*)&jmpCode = (DWORD)func - hook_point - HOOK_INS_LEN;//计算并填入跳转的目标地址
=======================
所以就是不清楚 我用od改 还提醒我 此处是E8 。。。你确定要改E9吗
页:
[1]
2