一、前期准备

本次要**的是《****核心原理》书本中提到的patchme程序

(一)、程序很简单,只有两个窗口

 ****核心原理 第20章patchme内嵌补丁实践            ****核心原理 第20章patchme内嵌补丁实践

程序很简单,但是字符串在程序中都被加密了,所以稍微有点麻烦。

二、**过程

(一)、使用x32dbg载入程序,按F9跳转到入口点。

****核心原理 第20章patchme内嵌补丁实践

(二)步入第一个call调用

****核心原理 第20章patchme内嵌补丁实践

(三)按f8步进来到40109B处

****核心原理 第20章patchme内嵌补丁实践

仔细分析这段代码,会发现这段代码的是第一轮解密代码,对004010F5到00401249(004010F5+0x154)这个区段的数据异或0x44。

****核心原理 第20章patchme内嵌补丁实践

(四)继续按f8步进来到40109B处,可以发现两个循环,这个两个循环都负责解密

****核心原理 第20章patchme内嵌补丁实践


(五)继续按f8步进程序会返回到00401038处,此处需要主意的校验和计算和比较校验和的值。

****核心原理 第20章patchme内嵌补丁实践

(六)继续运行程序,会发现OEP,如下图

****核心原理 第20章patchme内嵌补丁实践

(七)通过查找DialogBoxParamA的api手册,会发现4010F5是指向对话框的指针,跳转到4010F5这个地址之后,在往下滚动,发现字符串(x32dbg将这个区段解析为指令了,ascii码对的上,只能在内存窗口中查看)。

****核心原理 第20章patchme内嵌补丁实践

****核心原理 第20章patchme内嵌补丁实践

三、打补丁

通过分析pe结构,我们会发现.text头会有很多代码洞空白区域

****核心原理 第20章patchme内嵌补丁实践

****核心原理 第20章patchme内嵌补丁实践

对上述区域打补丁(其实可以直接修改字符串的)。。。

(一)修改OEP的跳转,这里需要对其指令进行加密运算。。。

****核心原理 第20章patchme内嵌补丁实践

(二)插入代码。。

****核心原理 第20章patchme内嵌补丁实践


(三)最后,成功(字符串应该先覆盖下的,懒得弄了)、

    ****核心原理 第20章patchme内嵌补丁实践                         ****核心原理 第20章patchme内嵌补丁实践



相关文章: