010 Editor 快速破解方法

查看 129|回复 11
作者:longs75   
010 Editor软件注册机制详细分析见下面这个帖子:
[新春礼物]_0_1_0_Editor 注册算法分析及全部版本注册机、网络在线验证分析和验证模拟
https://www.52pojie.cn/thread-1095855-1-1.html
我这个破解思路就比较简单了:不分析注册码,只要始终把注册标志标记为已注册,软件自然就是成功注册状态了。想走捷径的可以试试我这个破解方法。
以目前官网最新版本V13.0版 32位为例。用x32dbg进行调试。
破解思路:010 Editor在启动时,会检查注册状态,如果未注册,会提示是试用版,在这个提示处设断点,寻找破解线索。下图圆圈处就是启动时的试用版提示。


图片1.png (215.37 KB, 下载次数: 0)
下载附件
2022-10-4 16:19 上传

用x32dbg加载主程序010Editor.exe,按F9到达主程序入口处,看到一堆jmp指令。按Shift+D,在当前模块中搜索字符串:Evaluation。


图片2.png (300.72 KB, 下载次数: 0)
下载附件
2022-10-4 16:23 上传



图片3.png (107 KB, 下载次数: 0)
下载附件
2022-10-4 16:23 上传

可以看到,符合试用版提示的字符串有4个(都是换行符结尾),这4条指令地址非常接近,双击其中一条指令查看汇编代码,发现它们都在同一个子程序里,只是判断语句的分支不同。按F9运行一下,果然在启动之前能够中断,说明这段子程序就是在程序启动时用于检查注册状态的。
结束程序运行,然后重新加载,查看断点所在的子程序。
选中子程序第一条指令,查看流程图:


图片4.png (268.52 KB, 下载次数: 0)
下载附件
2022-10-4 16:24 上传



图片5.png (46.14 KB, 下载次数: 0)
下载附件
2022-10-4 16:25 上传

通过分析流程图可知,子程序流程在这里分成两个方向: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 指令,如下图所示。


图片6.png (283.38 KB, 下载次数: 0)
下载附件
2022-10-4 16:26 上传



图片7.png (279.39 KB, 下载次数: 0)
下载附件
2022-10-4 16:26 上传



图片8.png (249.53 KB, 下载次数: 0)
下载附件
2022-10-4 16:26 上传

查找到所有的cmp eax, 0xDB 指令,结果如下图:


图片9.png (97.79 KB, 下载次数: 0)
下载附件
2022-10-4 16:27 上传

挨个双击这些指令,查看相当的代码段,在好几处代码段都发现这条指令上面有一个相同的本地CALL:


图片10.png (110.29 KB, 下载次数: 0)
下载附件
2022-10-4 16:27 上传

进入这个CALL的代码段,是一串JMP表,继续跟进到子程序段,


图片11.png (180.45 KB, 下载次数: 0)
下载附件
2022-10-4 16:28 上传



图片12.png (197.03 KB, 下载次数: 0)
下载附件
2022-10-4 16:28 上传



图片13.png (96.56 KB, 下载次数: 0)
下载附件
2022-10-4 16:28 上传

最终到这个子程序的代码段,查看流程图可以看到,这个子程序出口有很多,用EAX值返回各种情形的标志,其中有一个就是EAX = 0xDB,注册成功标志。
既然是爆破,就简单直接一点儿,直接把EAX 赋值0xDB,然后返回,修改如下:


图片14.png (193.46 KB, 下载次数: 0)
下载附件
2022-10-4 16:29 上传



图片15.png (205.65 KB, 下载次数: 0)
下载附件
2022-10-4 16:29 上传



图片16.png (139.13 KB, 下载次数: 0)
下载附件
2022-10-4 16:29 上传

验证一下破解效果,手动把系统时间调整为2082年,再次运行主程序,一切正常。联网检查软件更新,显示这是最新版本,未发现联网验证问题。32位主程序破解完毕。
================================================================
64位版本的破解方法基本相同,但有一点儿不同,启动时验证指令是cmp ebx,0xDB,其它验证指令是:cmp eax,0xDB,如下图:


图片17.png (128.64 KB, 下载次数: 0)
下载附件
2022-10-4 16:30 上传



图片18.png (110.6 KB, 下载次数: 0)
下载附件
2022-10-4 16:31 上传

对关键CALL修改方法与32版本完全相同。


图片19.png (113.45 KB, 下载次数: 0)
下载附件
2022-10-4 16:31 上传

最后,给出64位和32位的x64dbg和x32dbg补丁,请自行调试,如有BUG请跟帖告知,喜欢请点个赞,谢谢。

patch.rar
(256 Bytes, 下载次数: 154)
2022-10-4 16:33 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB

下载次数, 下载附件

longs75
OP
  


homehome 发表于 2022-10-6 11:59
两个问题:
1、32位的
je 010editor.32F7A6

你提的这两个问题很关键,我就知道认真看我帖子的人一定会提出来。
第一个问题,就是上面 “冥界3大法王”解答的,出口参数的意义在开机验证子程序里边能找到,基本断定出口参数都是与注册有关的。
第二个问题,64位程序里,开机验证确实cmp ebx,0xDB,但是搜索发现整个程序里只有这一条指令,这时候有两种处理思路:
1、绝大多数子程序,出口参数都由eax带回。由于我们要找的出口参数是0xDB,所以凭经验可以试一试 cmp eax,0xDB,我就是这么试的。当然,如果出口参数是0或1,就不要用这个方法试了。
2、上面方法还是有一定瞎蒙的因素,不可靠,可靠的方法是往前回溯,找到那个验证CALL。请看图解:


图片1.jpg (330.07 KB, 下载次数: 0)
下载附件
2022-10-6 12:54 上传



图片2.jpg (70.67 KB, 下载次数: 0)
下载附件
2022-10-6 12:56 上传



图片3.jpg (296.5 KB, 下载次数: 0)
下载附件
2022-10-6 12:55 上传



图片4.jpg (77.74 KB, 下载次数: 0)
下载附件
2022-10-6 12:55 上传



图片5.jpg (153.62 KB, 下载次数: 0)
下载附件
2022-10-6 12:57 上传

qitianshun   

感谢楼主提供的python技术
yzw001506   

感谢分享,学习教程。
xiawan   

如此好贴,必须支持~~~
song122   

感谢分享
1229637150   

厉害 这个确实厉害
zhphs88   

感谢分享
yjn866y   

谢谢分享修改
sdieedu   

牛的思路。。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部