内嵌补丁练习

内嵌补丁

内嵌补丁即内嵌代码补丁(Inline Code Patch),当难以直接修改指定代码时,插入并运行被称为“洞穴代码”(Code Cave)的补丁代码后,对程序实现打补丁。该技术经常用于对象程序经过运行时压缩(或加密处理)而难以直接修改的情况。


如图,左边是经典的运行时压缩代码(或加密代码),EP代码先将加密的OEP代码解码,再跳转到OEP代码处执行。若要打补丁的代码存在于经过加密的OEP区域时,是难以实现打补丁的,因而右边是解决该问题的内嵌代码补丁,即在文件中另外设置被称为洞穴代码的补丁代码,在EP代码解码后修改其JMP指令使其跳转到洞穴代码处而不是OEP,执行完洞穴代码后再跳转至OEP执行,因此这种方法可以达到每次运行时都会对进程内存的代码打补丁的效果。

代码补丁和内嵌补丁的区别如下表:



补丁代码设置的位置:

1、文件的空白区域;

2、最后一个节区的扩展区域;

3、添加新节区。


内嵌补丁练习PatchMe

该小程序从ap0x的Reversing Labs页面下载。

运行程序查看:


显示“你必须给这个Nag打上补丁”,即让你修改弹框显示的字符串内容,点击确定:


对话框中显示有一个字符串要求解压其本身。

整个程序即要求修改两处字符串,然而这两处字符串都处于加密状态。

分析解密循环代码以及需要修改的字符串所在位置

使用Ollydbg打开该文

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值