010 Editor 快速破解方法
010 Editor软件注册机制详细分析见下面这个帖子:[新春礼物]_0_1_0_Editor 注册算法分析及全部版本注册机、网络在线验证分析和验证模拟
https://www.52pojie.cn/thread-1095855-1-1.html
我这个破解思路就比较简单了:不分析注册码,只要始终把注册标志标记为已注册,软件自然就是成功注册状态了。想走捷径的可以试试我这个破解方法。
以目前官网最新版本V13.0版 32位为例。用x32dbg进行调试。
破解思路:010 Editor在启动时,会检查注册状态,如果未注册,会提示是试用版,在这个提示处设断点,寻找破解线索。下图圆圈处就是启动时的试用版提示。
用x32dbg加载主程序010Editor.exe,按F9到达主程序入口处,看到一堆jmp指令。按Shift+D,在当前模块中搜索字符串:Evaluation。
可以看到,符合试用版提示的字符串有4个(都是换行符结尾),这4条指令地址非常接近,双击其中一条指令查看汇编代码,发现它们都在同一个子程序里,只是判断语句的分支不同。按F9运行一下,果然在启动之前能够中断,说明这段子程序就是在程序启动时用于检查注册状态的。
结束程序运行,然后重新加载,查看断点所在的子程序。
选中子程序第一条指令,查看流程图:
通过分析流程图可知,子程序流程在这里分成两个方向:EAX = 0xDB,表示各种已注册的状态,EAX <> 0xDB,表示各种未注册状态。由此可知,EAX = 0xDB是成功注册标志。
我在以前的帖子里说过,找到注册标志后,改程序流向是无效的,必须找到设置注册标志的公共CALL,在CALL里边改程序流向,才能真正实现破解。
在这个程序中,判断注册标志指令是cmp eax, 0xDB,它上面的CALL是一个模块外的系统子程序调用,再往上没有CALL了,怎么办?这说明这个标志已经提前由真正的CALL算好了,下面的关键是怎么找到这个真正的CALL:
单击选中 cmp eax, 0xDB指令,按Shift+C,复制二进制指令码,然后再按Ctrl+Shift+B,即在当前模块中按“匹配特征”进行搜索,按Ctrl+V粘贴二进制指令码,在主程序中查找所有的cmp eax, 0xDB 指令,如下图所示。
查找到所有的cmp eax, 0xDB 指令,结果如下图:
挨个双击这些指令,查看相当的代码段,在好几处代码段都发现这条指令上面有一个相同的本地CALL:
进入这个CALL的代码段,是一串JMP表,继续跟进到子程序段,
最终到这个子程序的代码段,查看流程图可以看到,这个子程序出口有很多,用EAX值返回各种情形的标志,其中有一个就是EAX = 0xDB,注册成功标志。
既然是爆破,就简单直接一点儿,直接把EAX 赋值0xDB,然后返回,修改如下:
验证一下破解效果,手动把系统时间调整为2082年,再次运行主程序,一切正常。联网检查软件更新,显示这是最新版本,未发现联网验证问题。32位主程序破解完毕。
================================================================
64位版本的破解方法基本相同,但有一点儿不同,启动时验证指令是cmp ebx,0xDB,其它验证指令是:cmp eax,0xDB,如下图:
对关键CALL修改方法与32版本完全相同。
最后,给出64位和32位的x64dbg和x32dbg补丁,请自行调试,如有BUG请跟帖告知,喜欢请点个赞,谢谢。
homehome 发表于 2022-10-6 11:59
两个问题:
1、32位的
je 010editor.32F7A6
你提的这两个问题很关键,我就知道认真看我帖子的人一定会提出来。:lol
第一个问题,就是上面 “冥界3大法王”解答的,出口参数的意义在开机验证子程序里边能找到,基本断定出口参数都是与注册有关的。
第二个问题,64位程序里,开机验证确实cmp ebx,0xDB,但是搜索发现整个程序里只有这一条指令,这时候有两种处理思路:
1、绝大多数子程序,出口参数都由eax带回。由于我们要找的出口参数是0xDB,所以凭经验可以试一试 cmp eax,0xDB,我就是这么试的。当然,如果出口参数是0或1,就不要用这个方法试了。
2、上面方法还是有一定瞎蒙的因素,不可靠,可靠的方法是往前回溯,找到那个验证CALL。请看图解:
感谢楼主提供的python技术 感谢分享,学习教程。
如此好贴,必须支持~~~ 感谢分享 厉害 这个确实厉害 感谢分享 谢谢分享修改 牛的思路。。 有办法汉化吗 感谢分享思路,学习了。