菜鸟尝试破解CAD插件的时间限制

查看 251|回复 9
作者:gwwzzf   
一、插件破解背景介绍
Msteel工具箱是CAD的一个插件,做结构设计用的人估计比较多,他们开发的另外一个MSteel批打印插件,我用的比较多,确实很方便,能提高不少效率,而且是免费使用
但是有个问题,就是每次安装后,都有一个使用时间限制,过期后,就必须去官网安装新的插件,才能继续使用,不然会有使用限制。
最近4月份,刚好插件使用时间到期,我嫌每次都需要安装麻烦,于是便想破解下时间限制,让其可以一直使用。
本文纯粹为技术交流、研究学习,若有涉及侵权行为,请联系删除。
二、小白破解之路
稍微研究了下Msteel的插件组成,最后确定.arx文件为主要功能插件,因为不同CAD版本对应插件名称不一样,我这边CAD对应的是MS_BatchPlot2019.arx插件。
百度查了下。arx是编译过的程序文件,arx 全名 advanced runtime extention,是使用 C++语言结合 MFC 库开发 AutoCAD 应用的 CAD 二次开发方式。估计有点类似.dll文件。
以前为了破解一个老外计算程序,研究过OllyDbg,程序用matlab编译的,最后破解以失败告终,但是知道了这个软件基本用法,所以这次打算继续用这个软件。
[color=](下方为真实展示本菜鸟破解过程,所以显得略小白,步骤也写的比较详细(啰嗦),大佬请无视)
1.先用PE查下有没有壳(其实我查了也不太会看,但是我看别的大佬都有这一步,所以这一步我们也不能少)


image.png (174.56 KB, 下载次数: 0)
下载附件
2023-4-21 20:02 上传

感觉应该是没加壳。继续~
如果这里查不出来,可以多换几个PE软件试试。
2.准备用OllyDbg开始破解,将插件拖入OllyDbg


image.png (17.08 KB, 下载次数: 0)
下载附件
2023-4-21 20:05 上传



image.png (14.5 KB, 下载次数: 0)
下载附件
2023-4-21 20:07 上传

没想到开局就不顺,OllyDbg竟然没法用。于是赶紧百度查了下,发现OllyDbg竟然很久不更新了,而且不支持64位,而我的CAD插件是64位的。
继续百度,发现了一个替代软件x64dbg。
软件使用方法好像和OllyDbg差不多,于是赶紧下载,继续整~~
3.更换x64dbg软件继续破解,将插件拖入x64dbg软件,软件界面确实和OllyDbg差不多


image.png (166.15 KB, 下载次数: 0)
下载附件
2023-4-21 20:18 上传

软件好像加载了一个DLLLoader64_E828.exe,不知道干啥的,先不管。
然后显示已经到达系统断点,已暂停,点击右方向箭头,继续运行。
显示已停止,调试结束!一脸懵。。。继续百度,同时查了下上方图片中ntdll.dll。
刚好看到有大佬总结这一部分,整段抄写下来:“圈起来的地方,你看是不是都是7开头的,这个叫做系统领空,是系统的代码段,你不用去改他,改他也没用,没法保存,我们调试程序,需要到程序的领空,所以,这个没啥用,如何进入到程序领空? 打开option,按我所选去掉其余的,然后重新载入程序 便是程序领空了 通常来说,4开头的就是程序领空,记住是通常,
凡事都有例外,例外不在这次讲述范围内。”


image.png (161.2 KB, 下载次数: 0)
下载附件
2023-4-21 20:40 上传

看了下,确实是7开头的,根据百度说法及个人尝试,将选项中的,用户DLL和系统DLL相关选项全部选中,然后重新载入cad插件。
4.载入插件后,先点击日志,然后一直点击下一步,下一步,可以看到插件慢慢执行了,直到出现“DLL已载入: 0000000180000000 E:\MS_BatchPlot2019.arx”。


image.png (125 KB, 下载次数: 0)
下载附件
2023-4-21 21:07 上传

在日志里,可以看到dll的详细加载和卸载过程,包括arx插件的插件与卸载。这个功能确实好用,要是第三步就发现这个,估计能省一些时间。
在这个位置,多点了几下下一步,应该也不太影响,只要MS_BatchPlot2019.arx插件没被卸载,应该不会影响后面操作。
5.回到软件主界面,在左边区域,点击右键→搜索→所有模块→字符串


image.png (172.48 KB, 下载次数: 0)
下载附件
2023-4-21 21:28 上传

这里只能搜索所有模块,因为此处软件仍显示ntdll.dll。如果搜索当前模块,是搜索不到想要的数据的。
6.接下来,就准备在字符串内搜索破解相关信息了,但在此之前,要先看下CAD软件中,查看下批打印插件过期的提示语句


image.png (17.7 KB, 下载次数: 0)
下载附件
2023-4-21 21:42 上传

显示的是“使用时限已过”,在没过期前,会显示过期日期。
7.在破解软件的引用中,搜索“使用时限已过”,查看显示结果


image.png (55.32 KB, 下载次数: 0)
下载附件
2023-4-21 21:44 上传

运气不错,搜索只显示了一个结果,双击进入


image.png (194.39 KB, 下载次数: 0)
下载附件
2023-4-21 21:47 上传

进入这个界面后,可以双击灰色这一行,或按F2,添加断点。经过测试,在本次破解中,增加断点没啥用。。。但是在exe破解中,还是有用的。
在顶部标题栏,可以看到模块名称,由 ntdll.dll 变为 MS_BatchPlot2019.arx 了,这时候如果想继续搜索就可以选当前模块了。
关于椭圆圈部分的内容,就是我们即将需要修改的区域,这里有一些知识点需要学习,我放在下一步讲
8.接下来,就准备开始分析和修改插件了,在这之前,有几个基本知识需要学习,都是百度可查的知识,本次破解能用到的我大概汇总如下:
CMP:比较的意思
JMP:无条件的跳转,只要执行到这里,就必然会跳转
JE/
[color=]JNE
:比较结果相等才跳转/比较结果
[color=]不相等
才跳转,这两个为相反指令
JG/
[color=]JNG
:大于则跳转/
[color=]不大于
则跳转,这两个为相反指令(
[color=]JNG会在软件中显示为JLE

若在破解中,遇到其他指令,可以自行百度查询
9.在学习完相关指令后,我们继续开始第7步后面的破解,在找到字符串文字往上翻看


image.png (74.08 KB, 下载次数: 0)
下载附件
2023-4-21 22:07 上传

可以看到左边有个红色小箭头,右边有个JMP,选中该行后,可以看到有个红线和箭头指向,JMP表示程序在执行到这一列时,将无条件跳转至后面箭头指向那一列。
这个跳转是跳过我们之前搜索“使用时限已过”这一行字符串的,说明我们需要将程序引导到这里执行。继续往上翻看;


image.png (174.16 KB, 下载次数: 0)
下载附件
2023-4-21 22:12 上传

又找到一个红色小箭头,右边有个JNE,选中该行后,可以看到有个红线和箭头指向,刚好指向在之前JMP的下一行,也就是说,程序如果按这个执行跳转,最终会显示插件过期的消息;
所以,这里需要按相反指令修改。选中该行,按空格,将 JNE 改为 JE ,点确认。显示结果如下:


image.png (63.26 KB, 下载次数: 0)
下载附件
2023-4-21 22:14 上传

至此,第一个修改完成,点击 Ctrl+P ,可以看到补丁位置是我们刚刚修改的地方。如果想取消修改,点击恢复选择项即可。


image.png (16.61 KB, 下载次数: 0)
下载附件
2023-4-21 22:20 上传

点击修补文件,将补丁修改保存至 MS_BatchPlot2019.arx 文件,将该文件放在MSteel文件夹,打开CAD,查看插件提示信息


image.png (17.88 KB, 下载次数: 0)
下载附件
2023-4-21 22:23 上传

可以看到,插件能正常显示过期时间了,但是软件还是无法正常使用,说明还有其他地方还需要修改。
10.在选择打印时,还是会跳提示,并自动打开MSteel网页


image.png (14.77 KB, 下载次数: 0)
下载附件
2023-4-21 22:26 上传

继续跟着这个关键字,在引用搜索“该版本已经过期”,搜索到2条信息


image.png (61.9 KB, 下载次数: 0)
下载附件
2023-4-21 22:28 上传

进入第一行搜索到的字符,按照第9步的原则,将找到的JNE修改为JE,找到的JG修改为JNG
这部分上方还有相关跳转,同样按该原则修改


image.png (74.71 KB, 下载次数: 0)
下载附件
2023-4-21 22:32 上传

回到引用,进入第二行搜索到的字符,继续按第一行的思路修改,无非就是看到JNE修改为JE,看到JG修改为JNG
注意,在修改前,需要注意看下跳转,这个是关键,被改错了。
修改完成后,继续按  Ctrl+P ,保存修改内容至 MS_BatchPlot2019.arx 文件,然后继续打开CAD,看看效果。
这时,按批打印确实不会报错,但是选用多张图纸打印时,最后还是会报错,显示该版本已经过期!若强制打印,则会报错。
至此,破解陷入僵局,我后续有多次搜索关键字,修改相关跳转,都没有作用,最终打印还是报错,无非时让报错提示变少而已,并没有本质的改变。
在被折磨的快放弃时,突然灵光一闪,在第9步时,通过修改跳转,让插件可以正常显示时间,在跳转的上一行,有个CMP。
这个CMP肯定是本地时间和过期时间相关的比较,于是继续开始研究。
11.继续回到第9步,我们查看将 JNE 改为 JE的上一行,按空格后,显示“ cmp dword ptr ds:[0x00000001801326D8], 0x1”


image.png (63.96 KB, 下载次数: 0)
下载附件
2023-4-21 22:52 上传

CMP为比较的意思,dword ptr ds:[0x00000001801326D8] 研究了半天,不懂。。。继续百度。查到结果如下:
dword 是double word也就是双字型。ss是栈的段寄存器,指示了栈的地址,ds表示数据的段寄存器,指示了数据区的地址,[]表示内存地址。
其实也不太懂,但猜测是不是日期比较的结果放在[1801326D8]这个内存地址了。


image.png (13.76 KB, 下载次数: 0)
下载附件
2023-4-21 22:56 上传

于是尝试搜索下,点击右键→搜索→当前模块→常数,输入“0x00000001801326D8”,点确定。


image.png (80.32 KB, 下载次数: 0)
下载附件
2023-4-21 22:57 上传

搜索出不少结果,死马当活马医,将所有显示有CMP,且进入后,下一行或二行为跳转指令的,改为相反指令,比如下图第一行,将JG改为JNG。


image.png (71.46 KB, 下载次数: 0)
下载附件
2023-4-21 23:00 上传

修改完成后,一共有10个修补项,保存至 MS_BatchPlot2019.arx 文件,然后继续打开CAD,看看效果。
结果竟然。。。。。
可行!!!
至此,整个破解过程完成!
三、总结与经验
整个破解过程花费了几个小时,对于我这种小白来说,最后破解成功还是靠运气。但最后结果是好的,也就值了,也算是学习了一些经验。
相信对大佬来说,这个破解还是比较简单的,不过我觉得这个破解过程还是比较有意思的,所以分享给大家。
最后,这个软件官方一直是免费下载使用,建议大家还是用正版哦!
本文纯粹为技术交流、研究学习,若有涉及侵权行为,请联系删除。
================================================================
补充:
根据各个大佬的提示,我又重新试了下,直接将3个move  ......   0,改为  move  ....  1。就可以了,注入3个补丁,就可以达到一样的效果。
关于直接发成品,因为每个CAD版本对应的文件不一样,所以也不太好发。

下载次数, 插件

冥界3大法王   

其实你能做到瞬间找到几个节点:
譬如时间的节点
注册码的节点
关于信息的节点
它们之间的交集
要是再会我自制的秘术。。瞬间机要信息全打印出来。。
pjy612   

感觉是不是把 那几个 mov xxx,0 的地方 改成 mov xxx,1 就行了。。。
看着是 不等于 1 则为过期,所以 mov 的地方 直接 mov 1 过去就好了吧?
44018723   

很不错的尝试,可以想一下:这个值的赋值从哪里来?一般这个逻辑只有一个地方,把赋值逻辑改掉就可以。试试IDA。
欧阳小牛   

学习能力强!精神可嘉!
ainihd   

自学能力很强,向楼主学习!
jiaoquangb   

其实不用这么麻烦,对那几个mov 赋值进行操作即可,不用改这么多
zjm8992   

这个属于良心插件了,没加壳
wqs12345   


wqs12345 发表于 2023-4-23 14:41
其实不用这么麻烦,对那几个mov 赋值进行操作即可,不用改这么多

大佬 教学下 MOV 那里应该改什么
jyjjf   

这款插件确实好用
您需要登录后才可以回帖 登录 | 立即注册

返回顶部