逆向工程核心原理20章内嵌补丁练习学习笔记

本文详细解析了如何分析并破解一个特定程序的过程,包括使用逆向工程工具观察程序行为,识别加密循环,理解解密算法,以及如何在程序中嵌入补丁以绕过检查。文章还介绍了如何修改程序的入口点和处理文件加密,最终实现程序的破解。
摘要由CSDN通过智能技术生成

0X00 分析程序

破解小程序:https://download.csdn.net/download/z_lit0/10695096
运行程序观察程序:
在这里插入图片描述
在这里插入图片描述
根据提示可知道需要破解的地方为这俩字符串,将程序加载到od中观察:
在这里插入图片描述
看到pushad,尝试在popad处下断点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现程序并没有断下,那只好单步执行看看:
运行到0040109B函数,可以发现进入了一个解密循环,主要是使用xor 44解密ebx指向的地址
在这里插入图片描述
继续单步执行到004010BD函数又看见程序执行了两个解密循环,第二个解密循环解密的区域是ebx指向地址00401007和上面的004010F5不同区域。
在这里插入图片描述
第三个解密循环如下图又是和第一个解密循环相同的解密区域,说明进行双重加密操作。
在这里插入图片描述
继续运行遇到如下经过解密后的区域函数00401039:
在这里插入图片描述
位于00401046处循环,先取ebx指向地址004010F5的4个字节(004010F5即我们上面分析的双重加密过后的区域)和累加器edx(第一次为0)相加后保存在edx中,循环结束后,将004010F5的特征值记录到edx中,(其实就是加加加后的值的,即edx溢出后的值)
在这里插入图片描述
可以发现程序使用固定的值31eb8db0来比较,不相等就推出程序
在这里插入图片描述

0X01 破解程序

在这里插入图片描述
发现程序调用了DialogBox,可以推测004010F5存储着字符串:
在这里插入图片描述
于是可以在空白区域内嵌补丁:
在这里插入图片描述
在这里插入图片描述
写好补丁,还要改下入口跳转函数,先跳转执行补丁代买再执行004011A2处的跳转跳转到真实区域。
在这里插入图片描述
修改之后还有在文件修改因为该区域经过了xor加密,不能直接写入需要转化一下,
E9 xor 7 = EE
F8 xor 7 = FF
01 xor 7 = 06
RVA = 00401083- 400000(imagebase) = 1083
根据pe view可知位于第一节区,第一节区的PointToRawData为400,VA = 1000
所以文件偏移为1083-1000+400 = 483
在这里插入图片描述
修改之后保存运行:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值