《逆向工程核心原理》学习笔记——内嵌补丁

  • 内嵌补丁(Inline Patch)

它是“内嵌代码补丁“(Inline Code Patch)的简称。常用于对象程序经过运行时压缩(加密处理)而难以修改的情况。

运行时压缩代码的Ep代码先将加密的OEP代码解密,然后再跳转到OEP代码处。

内嵌补丁在文件设置被称为“洞穴代码”的“补丁代码”,在EP代码解密后修改JMP指令跳转到洞穴代码的运行。

 

把特定地址区域的值加和后存储到寄存器中,将寄存器中的值与既定的值进行比较,这个值叫校验和(计算所得),若相同则跳转到OEP处,不同则输出错误信息。

  • Patchme练习

在书上的操作基础上额外几个基本的小操作。

  1. 在循环的地方看od循环结束的第一条指令下断点(F2)然后F4运行到目标指令(当红色的地址变成了白底红字则为跑到了该断点。
  2. 在运行过加密的指令后od不会进行重新分析,所以当我们抵达了一个看起来就像data段的地方时要右键点击点击分析。这样od将会重新分析,显示出已经解密过的代码段。

注意:函数传参的参数遵循小端序,传参顺序和我们看见的参数push进入的顺序是相反的。

  1. 内嵌补丁代码设置位置
    • (补丁代码较少)设置到文件的空白区域
    • 拓展最后节区后设置
    • 添加新节区后设置

注意:为了在程序中进行解密处理,一定要在节区头添加可写属性,获得相应内存的可写权限(当对无写权限的内存进行“写”操作时,会引发非法访问异常)

  • 1方法使用的空白区域可能被程序加密了,需要根据程序加密方式对我们的cave code也加密过后写入,否则经过解密的代码就不是我们想要写入的代码了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值