破解 010Editor
简介
010 Editor是一款十分好用的十六进制编辑软件,搞逆向的人大多都会用到它,但由于该软件并不是免费的,因此绝大多数刚开始学习逆向、破解的人都会拿它来进行练手。本文将讲解下我破解该软件的思路。
心情随笔:由于换工作等原因,我将自己的电脑重装了,导致很多常用的软件都没有了。然而就在前几天,同事要写判断文件完整性的脚本来问我,我就打算掏出010Editor来简单展示下PE结构,便发现自己并没有安装010,因此我便打算重新安装并破解了一遍,原本是不打算写这篇文章的,但破解的过程中让我想起了在奇兵时期的日子,想念当时大家一起逆向一起学习,想念丹阳哥,因此写这篇文章怀念一下当时的快乐时光。
下载安装
010 Editor下载地址:SweetScape Software Inc - Download 010 Editor
按自己需要的版本进行下载,下载完成后一路默认下一步完成安装。
破解
然后初次运行便会弹出窗口,提示让你输入购买的许可证。这里随便输一个值,便能看到如下提示无效用户名和密码的报错信息,如图:
有了提示信息,基本的思路也就有了,找到这条错误提示字符串,然后修改判断许可证是否有效的判断条件便可成功破解。我们用调试器加载010 Editor
,这里由于是安装的是64位版本的010,因此调试器便使用了x64dbg,个人也比较推荐使用x64dbg,因为64位程序必然是今后的趋势,并且使用体验也并不比OD差。
X64DBG下载地址:x64dbg - Browse /snapshots at SourceForge.net
搜索错误提示信息
汇编窗口右键选择搜索->当前模块->字符串,然后搜索错误提示字符串Invalid name or password
(这里也可以使用IDA,shift+F12查找字符串,找到错误提示信息,然后查看在哪点被引用了,再调到该地址也是一样的),如图:
用IDA定位错误提示信息:
通过IDA或X64dbg,在错误提示信息向上看,不远处就有正确提示Thank you for purchasing 010 Editor!
的字符串,如IDA中可见:
然后切换到流程图视角,分别定位正确提示信息位置和错误提示信息位置,便可明显发现起到关键判定
的位置,如图:
因此我们只需要在调试器中定位到关键判定处,将判定条件修改为恒定跳转到正确提示流程中就能完成破解,所干就干giao~,下图为关键判定处:
在调试器中定位到该位置,有两种修改方式,一种是修改判定条件,将cmp edi,0d8
修改为cmp edi,edi
,让ZF标志位恒为1,便不进行跳转,第二种便是将jnz
nop掉,让他恒不跳转。这里我用的是第一种方法,如图:
修改后选择右键->补丁->修改补丁文件,便能将修改后的文件保存下来。
然后将保存下来放在010Editor目录下(最好将原文件修改名字备份下来)并尝试运行激活程序,成功激活,牛~
但又发现了问题,虽然能激活了,但是这只是虚假激活,因此每次登陆都还会提示让重新激活,虽然每次激活都能激活成功,但每次打开点击一次未免有些麻烦。因此接着进行破解,你不是弹窗么,我直接把你弹窗的函数干掉。
思路是不断一层一层自动步过,找到画界面的函数,将其nop掉。因此再将破解好的程序拖入调试器,然后从函数入口点开始自动步过(Ctrl+F8),当遇到Call一个函数便弹出界面时,便下断从新运行,运行到该函数时步入,然后在开始进行自动步过,就这样一个函数一个函数找到Call 弹窗的函数。然后最终定位到call [rax+170]
便是最终画激活界面的函数,因此只需要将其nop掉,便不会在进行弹窗,也能绕过激活验证。
将call [rax+170]
nop掉便可,右键->二进制->用nopt填充,如图:
然后再将修改后的文件保存下来就可。右键->补丁->修改补丁文件。然后运行发现可以正常运行,并且不会再弹让你激活的窗口了。最终成功完成破解~。
后续又测试了一下,其实只需要干掉弹窗函数就可以直接绕过使用,不需要做之前的修改cmp edi,edi就可。
进阶
吾爱大佬的注册机:010Editor最新版 8.0.1 逆向分析及注册机源码及注册机分享 - 『脱壳破解区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn,这才是真正意义上的破解,里面的注册机依旧可用~。
我研究了一下午,基本找到了对应的判断函数以及逻辑。后续有时间在进行吧。