吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16054|回复: 134
上一主题 下一主题
收起左侧

[原创] 010 Editor 快速破解方法

    [复制链接]
跳转到指定楼层
楼主
longs75 发表于 2022-10-4 16:33 回帖奖励
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请跟帖告知,喜欢请点个赞,谢谢。
patch.rar (256 Bytes, 下载次数: 399)

免费评分

参与人数 27吾爱币 +30 热心值 +25 收起 理由
lazyforever + 1 我很赞同!
m1y3ll0w + 1 + 1 方法思路对于新手使用x64dbg很有帮助
1954435941 + 1 + 1 我很赞同!
默沉醉 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
tonyiyong + 1 + 1 用心讨论,共获提升!
我不是旧时 + 1 + 1 谢谢@Thanks!
pdcba + 1 + 1 谢谢@Thanks!
yanecc + 1 + 1 我很赞同!
fangchang819 + 1 + 1 谢谢@Thanks!
tail88 + 1 + 1 谢谢@Thanks!
qsj521521 + 1 + 1 谢谢@Thanks!
plasd + 1 + 1 谢谢@Thanks!
kenchanone + 1 + 1 我很赞同!
涛涛不绝00 + 1 + 1 谢谢@Thanks!
ddddhm + 1 + 1 我很赞同!
wasdzjh + 1 + 1 看了x64我就觉得不会用了,只会od路过
ZKvAH + 1 + 1 谢谢@Thanks!
忆江南 + 1 + 1 我很赞同!
冥界3大法王 + 4 + 1 感谢提供原装素材供我修炼~~
sdzcq + 1 + 1 谢谢@Thanks!
hhcjl + 1 + 1 谢谢@Thanks!
笙若 + 1 + 1 谢谢@Thanks!
my1229 + 2 + 1 来学习楼主的思路。
zwc123xyz + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Patches + 1 用心讨论,共获提升!
wapj152321 + 1 + 1 谢谢@Thanks!
yjn866y + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| longs75 发表于 2022-10-6 12:57 |楼主
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。请看图解:












免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
骇客之技术 + 1 我很赞同!
mmorpg + 1 + 1 谢谢@Thanks!
tail88 + 1 + 1 谢谢@Thanks!

查看全部评分

推荐
qitianshun 发表于 2022-10-4 19:28
沙发
yzw001506 发表于 2022-10-4 16:54
3#
xiawan 发表于 2022-10-4 17:13

如此好贴,必须支持~~~
4#
song122 发表于 2022-10-4 17:14
感谢分享
5#
1229637150 发表于 2022-10-4 17:19
厉害 这个确实厉害
6#
zhphs88 发表于 2022-10-4 17:21
感谢分享
7#
yjn866y 发表于 2022-10-4 17:39
谢谢分享修改
8#
sdieedu 发表于 2022-10-4 18:15
牛的思路。。
9#
无敌小儿 发表于 2022-10-4 19:16
有办法汉化吗
10#
zwc123xyz 发表于 2022-10-4 19:28
感谢分享思路,学习了。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 10:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表