一、前期准备
本次要破解的是《逆向工程核心原理》书本中提到的patchme程序
(一)、程序很简单,只有两个窗口
程序很简单,但是字符串在程序中都被加密了,所以稍微有点麻烦。
二、破解过程
(一)、使用x32dbg载入程序,按F9跳转到入口点。
(二)步入第一个call调用
(三)按f8步进来到40109B处
仔细分析这段代码,会发现这段代码的是第一轮解密代码,对004010F5到00401249(004010F5+0x154)这个区段的数据异或0x44。
扫描二维码关注公众号,回复:
1047127 查看本文章
(四)继续按f8步进来到40109B处,可以发现两个循环,这个两个循环都负责解密
(五)继续按f8步进程序会返回到00401038处,此处需要主意的校验和计算和比较校验和的值。
(六)继续运行程序,会发现OEP,如下图
(七)通过查找DialogBoxParamA的api手册,会发现4010F5是指向对话框的指针,跳转到4010F5这个地址之后,在往下滚动,发现字符串(x32dbg将这个区段解析为指令了,ascii码对的上,只能在内存窗口中查看)。
三、打补丁
通过分析pe结构,我们会发现.text头会有很多代码洞空白区域
对上述区域打补丁(其实可以直接修改字符串的)。。。
(一)修改OEP的跳转,这里需要对其指令进行加密运算。。。
(二)插入代码。。
(三)最后,成功(字符串应该先覆盖下的,懒得弄了)、