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
修改之后保存运行: