使用工具:OD & IDA 7.2
逆向平台:win7 x64
软件官网:https://www.sweetscape.com/010editor/
软件作用:010 Editor 是一款专业的文本和十六进制编辑器,其旨在快速轻松地编辑计算机上任何文件的内容。该软件可以编辑文本文件,包括 Unicode 文件、批处理文件、C/C++、XML 等,而在编辑二进制文件中,010 Editor 有很大的优势。
我下载的是32位安装版的程序,64位和便携版的逆向方式应该是大同小异的
安装完程序后简单查看了一下程序使用的DLL发现一大堆QT的DLL,所以传统的使用GetWindowTextW等Win32API对关键函数定位就不能起作用了。
在随意输入用户名和注册码之后会出现以“Invalid name or password.”开头的弹窗,就可以通过IDA的交叉引用定位到调用该字符串的函数。
通过简单的上下翻阅可以发现关键if语句
通过 v14 向上定位到复制的地址
跟进KeyFunc函数,由上方关键if语句知道,如果要进入正确的语句块则 v14 = 0xDB 即 KeyFunc的返回值为0xDB。
使用OD动态调试可知,如果输入错误ebx会等于 0x177
如果我们想要绕过验证则直接在IDA内把0x177的返回值修改为0xDB
然后在Edit -> Patch program -> Apply patches to input file 保存文件
至此我们就通过了第一步的本地验证,重新打开注册界面随意输入用户名和注册码都会通过验证
我们在愉快使用一段时间后,可能会重新出现注册码错误的或者提示连接服务器错误的提示,这就得突破网络验证机制了
在此前的关键if语句所在的函数中我们会发现以“Could not contact the webserver.”开头的字符串,往上阅读代码就可以发现网络验证错误打印跳转,结合OD可确定网络验证函数
根据上下逻辑可知当网络验证函数返回正整数时即为通过网络验证
这里是直接把验证CALL给直接NOP掉了,就相当于PASS了网络验证了
还要把此处的判断 nop掉,不然后续会弹窗,影响使用
总的来说本程序的逻辑是比较清晰的,注册码算法部分本文未具体展开我们只展示了众多破解此程序的其中一种方法,如有错误,还望指正。
安装包:010EditorWin32
逆向结果程序:010Editor
使用方法:下载俩个程序后,先运行安装程序待安装完成后把逆向结果程序放到安装目录替换源程序
也可以直接使用绿色版(解压即可使用):绿色版