宇郑 发表于 2022-12-17 22:42

第二阶段:在优化下Hook数据返回值得JMP指令示例:

在上面的示例中,我们将函数的开头替换成了一条 JMP 指令,指向一个新函数。这样做的缺点是,新函数必须与原函数在同一个模块内,否则 JMP 指令无法跳转到新函数。如果希望跳转到不同模块的函数,可以使用一种技术叫做 Trampoline,即在原函数和新函数之间构造一个跳板,用来转发调用。这样就可以解决 JMP 指令无法跨模块跳转的问题。这里是一个使用 Trampoline 的示例,假设有一个函数 int get_secret_value(),我们希望通过 HOOK 来修改这个函数的返回值,使得在调用这个函数时始终返回一个固定值。首先需要使用一些内存修改相关的函数,比如 VirtualProtect 来修改函数内存的保护属性,使得我们能够修改这个函数的代码。然后,我们需要在内存中分配一段空间,构造 Trampoline。Trampoline 的结构如下:
[*]一条 JMP 指令,指向新函数
[*]原函数剩余的代码
具体实现方法如下:以下为主题内容:
**** Hidden Message *****



2224272689 发表于 2022-12-18 00:23

感谢分享!

wangxp 发表于 2022-12-18 00:45

继续学习

jiqigouer 发表于 2022-12-18 04:48

学习学习

lies 发表于 2022-12-18 11:08

谢谢分享!

lies 发表于 2022-12-18 11:14

代码不全啊

三斤回锅肉 发表于 2022-12-18 14:48

可以可以的

yaoguen 发表于 2022-12-19 16:38

学习一下,多谢分享

yaoguen 发表于 2022-12-19 16:39

怎么代码看不全呢

POP 发表于 2022-12-21 11:44

感谢分享!
页: [1] 2 3
查看完整版本: 第二阶段:在优化下Hook数据返回值得JMP指令示例: