专业丰富的破解论坛技术交流,提供软件安全,病毒分析,脱壳破解,安卓破解,加密解密等,由无数热衷于软件爱好者共同维护
 
发新帖
楼主: 零五零八
查看: 1100|回复: 0

[技术文章] 某绘图软件的逆向破解

[复制链接]
零五零八 发表于 2020-9-29 14:43:14 | 显示全部楼层
本帖最后由 零五零八 于 2020-9-29 16:13 编辑

软件介绍
     这是一个简单易用的图形表达工作台,既能实现流程图、架构图、工程图、思维导图等数百种专业领域图形图表的绘制,又能提供一个白板进行头脑风暴和任意编排,轻松实现数据和创意的可视化呈现。

    软件试用版和正式版有什么区别?
设计软件试用版,可以免费使用15天,导出和保存均有水印,试用期过后不能再导出和保存文件,部分功能会有所限制。正式版可终身使用,导出和保存的文件没有水印,享受全功能。

       从官网下载最新版本10.1.2,从界面上可以看到软件为试用版。
1.jpg
环境在断网情况下进行的,为了避免可能的联网验证,所以我断开了网络,打开软件,OD进行附加,点击激活按钮查看界面等信息。
2.jpg
界面破解

随便输入一些信息,然后点击激活按钮,产品提示密钥无效,请重新输入。
3.jpg

点击确定后OD对API进行下断点。因为点击后创建了个窗口或是对话框,所以对这几个API进行下断DialogBoxParam、CreateWindowEx、MessageBox(A和W都要下)

4.jpg
点击按钮后在CreateWindowExW断下,然后看堆栈,查找返回地址,找主模块的返回

1.png
alt + E查看主模块基地址,将文件用IDA加载静态辅助分析,IDA 基地址修改为OD中基地址0x1350000

2.png
alt + C 回到代码窗口查看堆栈调用 找到EdrawMax模块调用,找到第一个,然后IDA跳转到这个位置,返现调用这里的很多,继续向下找堆栈返回
3.png
又找到了一处调用,IDA跳转查看。

4.png
IDA中在这里发现了一句话License code is not valid, please re-input it.翻译为中文就是许可码无效,请重新输入。看来就是这里了,IDA向上查看代码,交叉引用查看调用
9.jpg
这个位置会验证输入的产品密钥长度,我们将密钥重新更改为长度为0x14的密钥再次点击尝试

10.jpg
对话框改变了,点击确定之后随便输入点激活码,再点击手动激活

11.jpg
同样在CreateWindowExW断下,然后看堆栈,查找返回地址,找主模块的返回,和上次一样,在第二处返回到找到了关键代码IDA打开查看
IDA中看到Activation Failed!激活失败!
13.jpg
交叉引用找到跳转到失败这里,发现有两处会跳转到失败的代码
14.jpg
我们在OD尝试将两处NOP掉。
5.png
果然更改后的跳转会显示激活成功。
16.jpg
OD将PE文件右键复制到可执行文件,所有修改,更改保存到可执行文件,然后替换源文件重新启动附加。

7.png
启动更改后的程序,然后点击激活,显然我们并没有激活。
18.jpg
关闭注册窗口,打开OD再次附加该进程,在API CreateWindowExW上下断,点击激活然后查看堆栈,不断查找栈回溯,会找到了注册响应函数(IDA需重新更改OD上主模块的基地址)

19.jpg
调用call_windows返回窗口对象来显示对话框。进入函数,在函数内发现了提示失败的英文信息,那么可以初步判断是这个函数里来判断响应哪个并
返回窗口对象
21.jpg
在函数内第一个跳转进行强行改为不跳转试一下,窗口感觉是对的,但是窗口上的内容对不上,不是这里,重新启动,继续分析该函数.
22.jpg
F5尝试IDA辅助转换C代码查看,两个返回,2是我们强改后窗口变小的失败的窗口,那么从1返回的V95向上查看入手
23.jpg
函数上方发现有两处对V95相关做变更的判断,正常执行一遍没有经过判断中的代码,创建的窗口就是注册窗口。
24.jpg
将这两个位置的判断进行nop更改,第一处
25.jpg
第二处
26.jpg
果然,窗口已经变为我们输入的注册码,激活按钮已经变灰无法点击,当然到这里仅仅是界面被修改,并没有达到使用vip功能的地步。
27.jpg
功能破解
先找一个VIP功能提示界面,创建文档导出word文档,显示升级vip会员,关掉窗口,CreateWindowExW下断,点击word导出断下
28.jpg
同样的方法通过栈回溯找到这里。
8.png
函数中有两个call上面的就是检测是否激活函数,下面的便是没有激活创建的提示购买VIP窗口。所以我们需要将detection_activated的返回值始终为1就可以了。
30.jpg
detection_activated这个函数返回值经过ebp+ret_flag赋值,向上查找谁操作的ebp+ret_flag
31.jpg
在上面代码看到了有0赋值给ebp+ret_flag,OD将这里更改汇编为1,然后再次点击激活按钮。
32.jpg
以导出了。
33.jpg
OD重新保存修改到可执行文件,然后重新打开软件,试用版已经没有了。到此破解完毕。导出一个PDF没有水印,也不会弹出VIP提醒。
34.jpg

快速回复 返回顶部 返回列表