8091956 发表于 2019-1-30 16:34

XX起名软件不完全破解

本帖最后由 zjh16529 于 2019-6-6 18:54 编辑

我看到https://www.52pojie.cn/thread-850185-1-1.html这个帖子写到破解周易起名软件没有完全成功,所以我也试了一下,结果也没有完全破解。只解锁了大部分功能。
发这个帖子主要目的是分享一下通过IDA辅助破解的基本方法与通过特征码制作文件补丁的方法。

环境:WinXP_52Pojie专用版
工具:ollydbg,IDA pro 6.8 x86, 通用特征码查找替换补丁工具 v0.6 (这些工具都附带在WinXP_52Pojie的破解工具包内)

查壳和脱壳的步骤见https://www.52pojie.cn/thread-850185-1-1.html,这个软件加的壳是Aspack,破解工具包内有脱壳机。
脱壳后打开软件,是这个样子:

可以看见窗口上有提示(试用版),那么可以猜到大概率存在重启验证,我们就先搜索“(试用版)“,共有6处,全部下断点,然后按F9运行,程序中断,那么向上就可以找到验证的call。


找到关键call后,点进去可以看到关键call的具体实现,记下关键call的首地址:00407954,有时候关键call可能很复杂,这时就可以使用IDA将关键call反编译为C语言,这样可以加速分析。
现在我们打开IDA,点击New,选择我们要分析的文件,步骤如下:


IDA载入后等待一段时间,直到它分析完毕。
IDA分析完毕后,按快捷键“g”,输入刚才记下的首地址:00407954,点击OK,然后按F5反编译,就可以将关键call反编译为C代码。

这时对应到ollydbg的反汇编,C代码中调用的sub_4084F1对应到反汇编就是call 004084F1,很容易找到,如图:

这时一般的想法就是进入函数sub_4084F1,修改004084F1为retn 0x8(因为这个sub_4084F1有两个参数,要保持堆栈平衡,所以需要ret 0x8)。但是如果存在很多个与函数sub_4084F1代码相同的函数,就需要手动一一修改,这样太麻烦,这时就可以使用补丁制作工具完成修改任务。

我们先在ollydbg中进入函数sub_4084F1,看看里面是什么样子:

现在开始用特征码制作文件补丁,先打开通用特征码查找替换补丁工具 v0.6 ,选择设置补丁内容

进入后配置如图

我们在ollydbg中选中函数sub_4084F1(地址004084F1)开始几行代码的二进制编码为特征码,右键,选择二进制,二进制复制,如图

将复制到的二进制代码粘贴到补丁制作工具中的待搜索的特征码文本框内:

在ollydbg中将第一行代码改为ret 0x8,记下对应的二进制代码及其长度,二进制代码为 C2 08 00,长度为3

,然后将刚才复制的待搜索的特征码前3个字节改为C2 08 00,然后粘贴到待替换的字节中:

点击添加,保存

保存后点击创建补丁到目标文件所在目录。

这样补丁就制作完成,运行补丁,可以生成补丁后的文件。运行结果,

上面替换了11处,如果手工替换就太麻烦了。
打开补丁后的文件,可以看到是注册版了,不过依旧有些功能限制,因为还有暗桩没有被发现。

破解到这里就结束了,其他限制大概也可以用这种方式去除。
最后,从这个软件的购买方式可以判断注册码与机器码无关,注册次数的限制应该是通过联网验证实现的。

本文关于IDA的使用只是最基本的介绍,要深入了解请参考《IDA Pro权威指南》。
附上《IDA Pro权威指南》及未脱壳的软件供各位练手:
《IDA Pro权威指南》:https://www.lanzouj.com/i319ytg
周易起名软件:https://www.lanzouj.com/i31a0ba

8091956 发表于 2019-1-31 00:02

超正义的小煌 发表于 2019-1-30 17:01
楼主问问:不完全指的是哪里不完全了

不完全指破解后某些功能不正常,比如使用起名功能的经典模式时,程序会调用qmemcpy函数向未分配的内存写入产生异常。

釜森 发表于 2019-3-5 13:45

我也是看这个贴子:https://www.52pojie.cn/thread-850185-1-1.html关注这个软件的。这个软件暗桩多,套路深,真正的关键call藏得很隐蔽,作者的确下了功夫的。根据我的分析,其实关键call暨不是00407954,也不是004084F1,而是隐蔽在00569380这种相对call(0056939F处的call ebx里面),具体说就是当ebx=0053FF80时,确保下面一句(mov eax,dword ptr ss:)返回到eax的值为1即可,就是把0053FFCB赋值0改为1就能实现。但这仅仅是除经典、高分和专家3种主要功能模式以外的功能全部能用(还有2个小暗桩:一处是当出生时间录完后生成配置文件Dosamesoft.p时004B43EE处call返回值不对程序报错,另一处是在点击软件注册时由于没有注册码而出错)。要想经典、高分和专家3种主要功能模式能用,必须找到一个负责字符加解密的call(也是隐蔽在00569380这种相对call里,只是ebx是另外值)

getbt 发表于 2019-1-30 17:00

有没有完全破解的呢?

超正义的小煌 发表于 2019-1-30 17:01

楼主问问:不完全指的是哪里不完全了

Jack强 发表于 2019-1-30 17:18

感谢楼主分享

dayer 发表于 2019-1-30 17:51

谢谢楼主 真好需要

电子猫 发表于 2019-1-30 18:09

跟着学习下,谢谢楼主

zxcwcxzb 发表于 2019-1-30 18:20


感谢楼主分享

qinhl99 发表于 2019-1-30 19:18

感谢楼主分享

sodawaterAPJ 发表于 2019-1-30 23:16

稳的,感谢楼主分享
页: [1] 2 3
查看完整版本: XX起名软件不完全破解