010 Editor v11.0.1逆向破解

0x00 软件概况

使用工具:OD & IDA 7.2
破解平台:win7 x64

软件官网:https://www.sweetscape.com/010editor/
软件作用:010 Editor 是一款专业的文本和十六进制编辑器,其旨在快速轻松地编辑计算机上任何文件的内容。该软件可以编辑文本文件,包括 Unicode 文件、批处理文件、C/C++、XML 等,而在编辑二进制文件中,010 Editor 有很大的优势。

我下载的是32位安装版的程序,64位和便携版的破解方式应该是大同小异的

0x01 逆向分析

​ 安装完程序后简单查看了一下程序使用的DLL发现一大堆QT的DLL,所以传统的使用GetWindowTextW等Win32API对关键函数定位就不能起作用了。

1. 第一步本地验证

在随意输入用户名和注册码之后会出现以“Invalid name or password.”开头的弹窗,就可以通过IDA的交叉引用定位到调用该字符串的函数。image-20201112213723119.png (1139×467)

通过简单的上下翻阅可以发现关键if语句
image-20201112213834892

通过 v14 向上定位到复制的地址
image-20201112214124263

跟进KeyFunc函数,由上方关键if语句知道,如果要进入正确的语句块则 v14 = 0xDB 即 KeyFunc的返回值为0xDB。

使用OD动态调试可知,如果输入错误ebx会等于 0x177
image-20201112215124806

如果我们想要绕过验证则直接在IDA内把0x177的返回值修改为0xDB

image-20201112215508286

然后在Edit -> Patch program -> Apply patches to input file 保存文件
image-20201112215742352

至此我们就通过了第一步的本地验证,重新打开注册界面随意输入用户名和注册码都会通过验证

2. 网络验证

我们在愉快使用一段时间后,可能会重新出现注册码错误的或者提示连接服务器错误的提示,这就得突破网络验证机制了

在此前的关键if语句所在的函数中我们会发现以“Could not contact the webserver.”开头的字符串,往上阅读代码就可以发现网络验证错误打印跳转,结合OD可确定网络验证函数
image-20201112230114413

根据上下逻辑可知当网络验证函数返回正整数时即为通过网络验证

这里是直接把验证CALL给直接NOP掉了,就相当于PASS了网络验证了
image-20201112231543456

还要把此处的判断 nop掉,不然后续会弹窗,影响使用
image-20210422184010834
image-20210422184049912

0x02 总结

总的来说本程序的逻辑是比较清晰的,注册码算法部分本文未具体展开我们只展示了众多破解此程序的其中一种方法,如有错误,还望指正。

0x03 源程序安装包及破解程序

安装包:010EditorWin32
破解程序:010Editor

使用方法:下载俩个程序后,先运行安装程序待安装完成后把破解程序放到安装目录替换源程序

也可以直接使用绿色版(解压即可使用):绿色版