首页
社区
课程
招聘
未解决 [求助]jmp能做内存钩子,call可不可以呢?
发表于: 2020-5-1 16:11 3000

未解决 [求助]jmp能做内存钩子,call可不可以呢?

2020-5-1 16:11
3000

在研究一个被VM的程序 3.0.x的,发现用自己写的工具写进去jmphook,jmp指令后面的参数会被分开
原本应该是
jmp 11223344
E9 11223344
变成了
E9 11
22
33 44
但是用CE就可以正常写入跳转
初学内存表示很迷惑 这是VM的作用么?
后来发现用call可以做到不被打乱,随即用call和ret代替hook里的jmp
在程序启动的瞬间修改
但是打开程序会崩溃
而且我发现一般hook用的都是jmp
请问大佬们 call能做为jmp使用么?
‘’--------------------------------------------------------------------------------------------------------
刚刚再次测试了一下,发现是我修改时间问题 我需要等他加载后过1秒钟改才行
改了之后就能完美达到jmp的hook效果 真棒
还不用自己苦哈哈的算跳转地址了
‘’--------------------------------------------------------------------------------------------------------
使用过程中发现 过一段时间程序就会崩溃...
‘’--------------------------------------------------------------------------------------------------------
网上找了很多关于CALL的资料 可是其中大部分都只说到了CALL会改变EIP
翻了挺久才翻到一片文章:
http://www.voidcn.com/article/p-zdvgcuuo-bbb.html
十分详细 特贴与此 希望能够帮助到有需要的人


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-5-2 20:21 被嘿尼玛编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 35
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
E9
2020-5-1 16:48
1
雪    币: 9227
活跃值: (6445)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
在代码中写入JMP指令
JMP 二进制 =E9

比如我要 JMP到  7777ABCD
E9 后跟的是RVA
所以
实际字节=指令所在地址(当前内存地址)+指令长度(5)+RVA(目标地址)

即如果在 00552df7处 要跳到7777ABCD
那么
RVA=7777ABCD-00552df7-5=77227DD1
即在00552df7处写入E977227DD1
2020-5-1 17:46
0
雪    币: 1570
活跃值: (383)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
4
JMP和Call最大的区别就是,call会产生一个esp偏移. 如果在HOOK跳转函数里没有处理就会因为esp跑偏造成堆栈错误崩溃.
所以一般hook都是使用无条件跳转  jmp  因为jmp不会让esp跑偏. 
2020-5-2 06:49
0
雪    币: 62
活跃值: (369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
ezrealik JMP和Call最大的区别就是,call会产生一个esp偏移. 如果在HOOK跳转函数里没有处理就会因为esp跑偏造成堆栈错误崩溃. 所以一般hook都是使用无条件跳转 jmp 因为jmp不会让 ...
受教了 感谢大佬解惑
2020-5-2 15:30
0
雪    币: 12857
活跃值: (9172)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
6
call imm
add $sp, sizeof(void *)
等价于
jmp imm
2020-5-2 16:19
0
雪    币: 62
活跃值: (369)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
hzqst call imm add $sp, sizeof(void *) 等价于 jmp imm

感谢大佬赐教

最后于 2020-5-2 20:47 被嘿尼玛编辑 ,原因:
2020-5-2 20:01
0
雪    币: 631
活跃值: (46)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
可以的, 只要注意保存现场即可. 
以前写的X86HOOK引擎, 你可以参考一下. https://bbs.pediy.com/thread-201954.htm
2020-5-8 17:29
0
游客
登录 | 注册 方可回帖
返回
//