【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

(编辑:jimmy 日期: 2024/10/30 浏览:2)


好久没破解了,说起来也快一两年了。最近本来就作业多,还要写一大堆公式!!!word手写费神,找个能OCR识别公式的工具。
搜了一些写公式的软件,据说mathpix和mathtype组合起来用不错,但论坛的mathtype大都不能用。然后,去翻以前的软件收藏文件夹,顺利安装,结果却因为一个有纰漏的注册码(第三个)触发软件暗桩,索性开虚拟机干起老本行。
!!!以下破解日志纯属逗比小白的自我救赎,请大佬绕路!!!
软件正常情况是这样的:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

1234.PNG


到我手上就这样了(功能限制):
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

功能限制.PNG


这种情况是因为安装的时候用了个有问题的注册码(第三个),然后软件检测到“盗版”就会限制功能。
盗版检测信息框(OK,let's do it.意思是“老子就用盗版不服咬我”):
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

检测盗版信息框.PNG


思路①
破解思路溯源,软件是在提示检测到盗版后,弹信息框,限制功能。所以,我们可以在弹信息框的时候点暂停,“执行到用户组代码”,然后一直按F8走出信息框API调用部分的代码后,这个检测函数call 的头部用ret大法将头部ret即可。(因为这部分算是我走的错路,所以一带而过,也不上太多图了)
检测函数call头部:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

456.png


复制所有修改,保存文件到桌面。保存出来的主程序替换到安装目录下,完美运行,不弹检测盗版信息框,各功能正常。
哈哈,没想到这么顺,一条代码就解决了。
OK,现在将破解程序从虚拟机拷贝到物理机,重新安装软件,并将破解程序覆盖到安装目录下。
开头的界面是正常的,软件功能齐全(”教学说明“信息框图):
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

789.PNG


我点确定之后,确实没有弹盗版检测信息框,但是,点了确定后功能按钮变少了,菜单二级目录也变灰色了,也就是前面的第二张图功能限制。欸,说白了破解失败。
我在尝试各种重新安装清理注册表还是失败后,只好再次打开虚拟机~~~
思路②
思路分析,为什么在虚拟机里运行得好好的,一到物理机就不行了?应该是我之前第一次在物理机打开的时候检测到我使用盗版,然后在我的电脑留下了文件或注册表什么的。这样,不论我怎么卸载安装,只要我一打开软件,软件第一时间访问注册表或文件,知道我之前被检测到使用盗版,就直接限制功能。而不会调用盗版检测那个函数call,所以我对那个call做手脚在我物理机上没有用。
(为了防止有新手小白安装软件后没有替换主程序就打开软件而被检测或向我一样用到错误的注册码(第3个),所以crack继续进行。)
为了使物理机与虚拟机的情况相同(控制变量法),我在虚拟机上用第三个错误的注册码安装,让虚拟机被检测到使用盗版。
然后,我观察到每次安装后第一次打开软件会弹上图的信息框,这时功能还是齐全的,但点确定后,功能立马被限制了。
所以,还是那个方法,在弹信息框的时候点暂停,“执行到用户组代码”,然后一直按F8走出信息框API调用部分的代码后,
就来到了这:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

从信息框call出来.PNG


然后,瞎猫碰上死耗子大法,把下面那个call  NOP掉。
这样:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

nop掉关键call.PNG


重新运行,启用刚刚的nop命令补丁,在弹”教学说明“的信息框之后功能按钮没有变少,貌似成功了,没有功能限制。
但是,我点了一下菜单”选项“,发现二级菜单的按钮都是灰色的,说明还没有完全破解。
继续,撤销nop,在这个call下断点,F7步入,跟进去后,发现第一个关键跳,这个跳在该情况会实现跳转,那我们就不让它跳,nop掉。
第一个关键跳:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第一个关键跳.PNG


nop掉之后,软件会弹个信息框让我选择试用30天还是购买注册码。(可去你的吧,你看看我像是买注册码的人吗?)说明这个不是我们要找的跳。接下来我找到了第二、三、四。。关键跳。
第二个关键跳:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第二个关键跳.PNG


第三个关键跳:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第三个关键跳.PNG


第四个关键跳:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第四个关键跳.PNG


然后,我发现这几个跳转的判断依据都是判断寄存器eax的值,然后eax的值又是通过mov命令将常量54DFAC赋予的(见第一个关键跳图中的红色断点处)。然后,我修改常量54DFAC(从四个关键跳看,可取1、2、3、4)的值一个个的试,发现当取2的时候才能成功完美运行,功能完全,终于要成功了。
在数据窗口中跳转到54DFAC,并下内存访问断点,重新运行。软件运行后,成功在系统运行代码层断下,然后”执行到用户组代码“,然后一直按F8走出当前call,
走出call后:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第二个关键call.PNG


然后,我就发现了真相,真実はいつも一つ,这个call,就是我们要找的,软件打开时第一时间调用的“访问注册表或文件”函数call。上面有个一眼就能发现的关键跳,把它jmp掉。回到物理机,完美运行,大功告成!!
第五个关键跳:
【教程】一条错误注册码引发的命案——二次破解mathtype6.9b安装后的主程序

第五个关键跳.PNG


————————————————————————————
新人发帖,如有违规,敬请谅解
手打那么多字不容易,给点评分吧~
软件帖子
https://www.52pojie.cn/forum.php?mod=viewthread&tid=1118773&page=1#pid30292442