代码Hook之指令级实现

在工作中经常会使用到Hook技术,一般函数Hook会较为广泛的应用。  
函数Hook分为很多种,修改PE的导入表是较为简单且常用的方法,但修改PE存在着实时性不高,时机不好掌握等特点,因为在PE文件被装载之后才能去动态地修改其导入表内容,进而达到函数跳转被截取的目的,但PE文件的加载可能很随意,任意一PE文件有导入表如果没有被Hook到,则就出现了漏洞,所以现在介绍一个古老但实用的技术,通过从根本上解决掉函数跳转来实现函数的Hook。这就是今天的主角,指令级Hook。  
函数Hook,本质就是在代码调用某个函数的时候,会先进入到自己预设的一个其它函数执行,好让我们得到一个控制的机会,那么指令级Hook,以x86平台为例,只要能完成跳转,即可跳转到我们自己的代码,有很多的指令可以完成如call,jmp系列的指令都可以做到,且jmp这种无条件跳转最能满足我们的需要。  
实现原理,那就很简单了,就是把目标函数的前五个字节替换成一个无条件跳转,然后保存这五个字节的内容,接着跳转到我们预设的函数里,然后我们就得到了控制权,此时你就可以无所欲为了,等您忙以后,再执行我们保存的指令,最后再跳转到目标函数的第六个字节的指令继续执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值