as614001 发表于 2021-8-5 12:04

为什么我hook某些地方是call 跳转?

本帖最后由 as614001 于 2021-8-5 13:39 编辑

发现hook call 发现一些地方只能是 call 跳转地址;
正常应该是 jmp 跳转地址; 是因为有保护吗?

描述的不准确:就是我hook代码用的其实jmp 但是到OD看变成了 call

32154678925 发表于 2021-8-5 12:15

没遇到过,顶一下

zjchxj 发表于 2021-8-5 12:50

用CALL用JMP,都能达到跳转的目的。JMP的话,需要自己跳回来。call的话直接retn就完事。。只要不破坏运行就可以了。

lies2014 发表于 2021-8-5 12:53

没有ret的call就相当于jmp

zjsylx 发表于 2021-8-5 13:24

as614001 发表于 2021-8-5 13:38

zjchxj 发表于 2021-8-5 12:50
用CALL用JMP,都能达到跳转的目的。JMP的话,需要自己跳回来。call的话直接retn就完事。。只要不破坏运行就 ...

问题 我hook用的jmp 到od 一看变成了 call

wangyujie96 发表于 2021-8-5 14:02

call和jmp的字节码根本不一样,求助应该上代码,至少上张图吧

leeairw 发表于 2021-8-5 15:49

起码把hook时修改的代码部分贴出来。

Tugou 发表于 2021-8-5 16:53

你自己写的E8和E9,编译器不可能给你改了呀。
建议直接上关键代码,个人感觉你可能。。。OD里定位错位置了。{:1_918:}

as614001 发表于 2021-8-6 10:39

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
查看完整版本: 为什么我hook某些地方是call 跳转?