本帖最后由 云在天 于 2019-6-7 13:19 编辑
背景
这里就不作Maple的介绍的,知道这个的都明白是做什么的。
2019.4发布了新版本的Maple,随后放出了破解版本。
安装试用后发现,这个破解版本显示永久激活,但出现了输入公式后得到复数结果,同时无法正常绘图,程序无法正常使用。
a. 程序破解正常:
显示正常
b. 无法正常使用:
无法正常工作
搜索了一圈后,发现没有破解成功的,查看了一下破解文件与原文件的区别。
很明显的发现,破解的文件比原文件小了很多,但发现破解文件没有加壳,导出函数却是一致的(使用dllexp工具查看),
而主程序在运行时需要调用maple.dll文件里面的导出函数,这说明这个破解文件是不完善的。
因此,萌生了参考2018版本破解文件,自己动手破解2019版本的Maple的想法,所以有了这个帖子。
工具
- 测试环境:Windows10 x64
- 文件对比工具:010Editor
- 反汇编工具:x64dbg
- 参考程序:Maple 2018.0
- 目标程序:Maple 2019.0
正文
-
使用010Editor分别打开破解前后的2018版本maple.dll文件,使用文件对比功能,找出破解点的文件偏移地址:
-
有2处关键位置的文件偏移地址:
a. E88DF
b. 6FBE10
-
使用x64dbg打开2018版本maple.dll文件,使用文件偏移(Ctrl+Shift+G), 定位到上面找到的关键位置:
a. 分析第1处关键位置,此处为一跳转,破解后跳向下一行(也可将此处nop掉)。
关键位置1
b. 往上查看代码,找到字符串: vendor_info,这个字符串作为寻找第1个破解关键位置的定位特殊字符串。
c. 分析第2处关键位置,破解后将该调用直接返回0,查看上下的汇编代码后,未发现有用的字符串。
d. 搜索第2处关键位置的引用,只找到一处引用
e. 分析此处引用代码,发现前后有很多与0值对比的代码片段,但只有当前这一处为一内存地址的读取,而其他地方则为动态地址的读取
f. 再往上查看,发现有一处"!"字符,可根据这个字符以及代码的特征进行第2破解关键位置的定位。
-
使用x64dbg打开2019版本的maple.dll文件,搜索字符串"vendor_info", 定位到第一个字符串位置
搜索vendor_info:
定位到第一个vendor_info引用处:
-
往下查找ja跳转的地方,将其修改成跳转至下一行:
-
搜索"!", 定位到最后一个字符串位置:
搜索结果:
定位到最后一处:
-
根据第3步分析出来的特征,向下查找,发现读取的地址为[00007FF8092DA810],相应的文件偏移为[739210]:
-
跳转到该地址,将汇编代码修改成直接返回0:
-
至此,需要破解的2处均已修改,保存patch文件(Ctrl+P),并替换原文件。
-
运行程序,正常运行,破解成功:
总结
- 本文采用比较笨的字符串定位法进行分析,没有使用高级操作和脚本的编写,简单易行。
- 关于文中提到的工具的使用,可搜索本站的其它帖子,可参考本人的另一帖:向破解高手学习的方法和思路—以酷我音乐VIP破解为例
- 2018版本的maple.dll需要放在安装目录下,否则无法使用x64dbg打开。
- Maple2019.0安装程序,本文用到的dll文件,以及最终的破解文件,下载链接:百度盘下载地址
- 若只想要破解后的文件,只需下载Crack-2019.7z文件即可,用maple.dll替换目标文件。
|