吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 436|回复: 10
收起左侧

[求助] inline hook后jmp指令解析错误问题?

[复制链接]
小风o_0 发表于 2024-9-10 22:04
比如图片中我hook的函数是MessageBoxA,我复制完原来MessageBoxA的前几条指令到其他的内存中,我们知道jmp指令里面使用的是解析过后的地址,是一个基于上下文环境的相对地址,那么我在其他的内存中执行这段代码就会报错,有什么办法解决这个呢?
我目前想到的是,先在MessageBoxA头部写入一个jmp指令,跳到我们的函数,然后在我们的函数中恢复MessageBoxA挂钩,然后手动调用执行MessageBoxA后再重新挂钩,但是这样每次执行函数都要进行一次挂钩和解除挂钩,效率非常低,所以有什么办法能解决上面的问题呢?

希望大佬指点迷津,感谢!

hook后的代码

hook后的代码

hook前的代码

hook前的代码

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 小风o_0 发表于 2024-9-10 22:14
我还想到一个方法,就是对所有这种相对寻址的指令进行解析,解析成绝对地址,然后写到自己的函数里,但是感觉太麻烦了,不知道有没有更简单的办法?
爱飞的猫 发表于 2024-9-10 23:50
 楼主| 小风o_0 发表于 2024-9-11 07:46
爱飞的猫 发表于 2024-9-10 23:50
用现成的 Detour 库应该能正常处理这类情况,换它试试?
https://github.com/microsoft/Detours

感谢版主的回答,我之前也用过这个库,不过我估计它的底层源码也是把这种相对指令解析成绝对地址,我去看看它的源代码
 楼主| 小风o_0 发表于 2024-9-11 07:47
爱飞的猫 发表于 2024-9-10 23:50
用现成的 Detour 库应该能正常处理这类情况,换它试试?
https://github.com/microsoft/Detours

对了,版主,我想问问论坛可以改名字吗,我想改名字,但是找不到设置的地方?

点评

改名字可以去申请区发帖,不过你cb不够,现在改不了  详情 回复 发表于 2024-9-11 10:07
xlhwxyh 发表于 2024-9-11 09:42
先弄明白32位程序吧!上来就搞64位,肯定有难度
苏紫方璇 发表于 2024-9-11 10:07
小风o_0 发表于 2024-9-11 07:47
对了,版主,我想问问论坛可以改名字吗,我想改名字,但是找不到设置的地方?

改名字可以去申请区发帖,不过你cb不够,现在改不了
苏紫方璇 发表于 2024-9-11 10:10
这种问题想自己搞的话,可以用汇编和反汇编引擎,先反汇编获取指令,再汇编到对应内存地址写入
 楼主| 小风o_0 发表于 2024-9-11 10:43
苏紫方璇 发表于 2024-9-11 10:10
这种问题想自己搞的话,可以用汇编和反汇编引擎,先反汇编获取指令,再汇编到对应内存地址写入

是的 我是用的反汇编引擎计算的长度,不过我试了一下detours,它写入一个Jmp指令其实只改写了前面两条指令,不会覆盖到下面的相对地址,所以就不会出错

点评

你可以把 hook 地址挪到相对地址指令,看看它会不会正常处理。 它应该也是内置了个反汇编引擎,分析要改多少字节。  详情 回复 发表于 2024-9-11 17:05
爱飞的猫 发表于 2024-9-11 17:05
小风o_0 发表于 2024-9-11 10:43
是的 我是用的反汇编引擎计算的长度,不过我试了一下detours,它写入一个Jmp指令其实只改写了前面两条指 ...

你可以把 hook 地址挪到相对地址指令,看看它会不会正常处理。

它应该也是内置了个反汇编引擎,分析要改多少字节。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-13 02:52

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表