inline hook

这篇具有很好参考价值的文章主要介绍了inline hook。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

inline hook

inline hook的核心是通过修改机器码改变程序的执行流程,实现跳转有很多种方式,如JMP的短跳(EB)、近跳(E9)、远跳(EA),其中短跳和进跳的的操作数是相对于EIP的偏移,其满足“目标地址 = 当前指令地址 + 指令长度 + RVA”,而远跳的操作数是一个绝对地址;又如 push+retn 的组合(原理是 retn = pop eip);又如 mov eax + jmp eax 等手段。

x86

以JMP为例:

首先需要找到hook的位置,这可能是某个功能处,也可能是程序起始位置。如使用GetProcAddress获取某个API的地址,例如:

char* target = (char*)GetProcAddress(GetModuleHandleA("Kernel32.dll"), "CreateFileA");

或者是 &CreateFileA。

接着修改该处的内存属性和写入相应的内容,因为代码段默认是可读可执行的,是不可写的,需要修改属性。这里可以是可读可写、也可以是可读可写可执行。因为写入了相应的跳转指令后会修改回原来的属性。修改的字节数可以是五字节、六字节、七字节等。写入的内容是上述的跳转指令,如JMP、push等以及跳转的偏移。

最后把上述内存地址属性修改为原属性,可读可执行。

x64

64位环境下,实现跳转的方式可以是:mov rax,xxxxxxxx;jmp rax;当然也可以是mov rax,xxxxxxxx;push rax;ret 或者是 jmp qword ptr[xxxxxxxx]。

其他与x86下大同小异文章来源地址https://www.toymoban.com/news/detail-794353.html

到了这里,关于inline hook的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序 通过setData 给两个变量设置同一个数组时,为什么修改一个变量,另一个会也被修改?

    在微信小程序中,使用 setData 方法更新数据时,如果给两个变量设置同一个数组,修改其中一个变量的值会导致另一个变量也被修改的原因是,数组是引用类型的数据,在内存中的存储方式是按引用地址存储。 当你将一个数组赋值给两个变量时,实际上两个变量共享同一块内

    2024年02月11日
    浏览(35)
  • KUKA机器人程序运行速度倍率和手动速度倍率的修改方法演示

    如下图所示,点击示教器上方的“倍率编辑”图标, 如下图所示,此时会弹出窗口,可以对程序运行倍率和手动调节倍率进行修改, 如下图所示,程序运行倍率:可以通过拖动进行设置,也可以通过点击“-”或“+”图标进行减小或增加, 如下图所示,手动调节倍率:可以

    2024年02月15日
    浏览(28)
  • python 变量赋值 修改之后 原值改变

     python 是一种动态语言,因此变量的类型和值 在运行时均可改变。当我们将一个变量赋值给另一个变量时,实际上是将变量的引用地址传递给新的变量,这意 味着新旧变量将指向同一个位置。因此,在更改其中一个变量的值时,另一个变量的值也会被更改。

    2024年02月14日
    浏览(28)
  • 微信小程序生成菊花码,通过Java修改中间图片为上传的图片,含前端使用方法

    场景: 在微信小程序环境下,用户上传个人头像,生成个人的微信小程序菊花维码,可以无限申请并生成二维码,然后二维码中间的圆形为用户自己上传的头像,最后可以通过生成的二维码扫码进入个人简介页面。 因为图片捣腾了一些时间,记录一下,类似问题给的时间都

    2024年02月13日
    浏览(140)
  • Cesium修改原始鼠标视图操作, 右键按住改变视角, 滚轮滚动进行zoom改变

    主要使用API为 screenSpaceCameraController

    2024年02月13日
    浏览(34)
  • jenkins url发生改变如何修改回来

    问题: 我的jenkins服务器部署完后,此时url就已经固定了如下: 但是我更换了公网IP,url地址还是旧的,现在就需要修改一下配置文件; 修改配置文件 ($JENKINS_HOME/jenkins.model.JenkinsLocationConfiguration.xml) 记得重启一下你的jenkins

    2024年01月17日
    浏览(46)
  • Excel修改日期格式,改变日期的筛选方式

    我们有两列日期数据: 左边这一列筛选会显示: 右边这一列筛选会显示: 将【日期1】的格式修改为文本格式即可 选中日期2,点击【数据】–【分列】,然后什么都不用操作直接点击完成,即可转变格式…

    2024年02月14日
    浏览(28)
  • unity通过代码动态改变模型颜色

    using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModelShine : MonoBehaviour { }

    2024年02月05日
    浏览(32)
  • Java AOP 通过注解实现切面及通过注解改变返回值

    学习过java的小伙伴都知道Spring的重要知识点之一就是AOP,AOP也就是切面编程,切面编程它能够帮助我们实现非侵入式的功能增强,解耦现有的业务逻辑和要新增的功能增强。 实际应用中的场景 事务管理、拦截器、日志处理、权限控制等。 AOP的增强方式 前置增强、后置增强

    2024年02月14日
    浏览(27)
  • RLC如何通过改变频率实现输出稳压

    当开关频率工作在容性区域时 ,容抗抵消完感抗还有剩余,所以容抗+感抗可以近似为一个容抗Cr,但加上频率的改变,容抗又可以近似为一个可调电阻 那又改如何控制频率,保持输出稳压? 当输入与输出电压不变时,Rac变小,对应Ir电流变大,又因为加在电容上的电压不变,

    2024年01月21日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包