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版本对应的文件不一样,所以也不太好发。