1、申 请 I D:zwo
2、个人邮箱:z3241280@gmail.com
3、原创技术文章:运行时注入方式破解最新Mac版010 Editor v9.0.1
流行的二进制编辑器 010 Editor已经更新到了9.0的大版本,这次大版本更新了模版和脚本功能,对于繁琐的二进制修改任务可以通过脚本化来实现,可谓大利器。
论坛之前已经有Mac版的7.0和8.0的破解,破解方式都是通过hopper硬改可执行文件。这次我破解的方式是动态库注入,好处有两点:1、不需要修改原版的一个字节 2、不需要额外对程序的自我完整性检测做工作。
首先根据购买的关键词buy,搜索定位到了核心逻辑函数 sub_10036c9b0,如图1
如图1
这是个相当复杂的逻辑,有接近100个逻辑块,幸好每个关键节点都会通过lea指令加载字符串,且字符串未经加密,简直就是送分题!
不难通过图2发现两处核心函数,并且如果这两函数返回特定的值,程序就会一直通往认证成功。
第一个函数sub_1000e9760为在线认证,返回0xe7后,变为本地认证。
第二个函数sub_1000e9680为认证状态,返回0xdb后,为已认证。这个返回值也跟前面的v8版本认证一致。
图2
最后编写代码hook掉原函数
[C] 纯文本查看 复制代码 void override(void) __attribute__ ((constructor));
int sub_1000e9680_tweak(int arg0, int arg1){
return 0xdb;
}
int sub_1000e9760_tweak(int arg0, int arg1, int arg2){
return 0xe7;
}
void override()
{
unsigned long sub_1000e9680 = image_vmaddr_slide(0) + 0x1000e9680; //auth status
unsigned long sub_1000e9760 = image_vmaddr_slide(0) + 0x1000e9760; // network
int (*orig_fun)(int arg0, int arg1, int arg2);
mach_hook_ptr((void*)sub_1000e9680, (void*)&sub_1000e9680_tweak, (void**)&orig_fun);
mach_hook_ptr((void*)sub_1000e9760, (void*)&sub_1000e9760_tweak, (void**)&orig_fun);
}
通过clang编译成dylib,得到EditorHack.dylib。
使用方法有两个,第一种:环境变量注入
DYLD_INSERT_LIBRARIES=./EditorHack.dylib /Applications/010\ Editor.app/Contents/MacOS/010\ Editor
第二种,通过注入原app内部的其它动态库实现。当然你也可以通过insert_dylib注入主程序自身。我选择的是QT动态库的其中一个libquazip.1.dylib。
在/Applications/010\ Editor.app/Contents/Frameworks目录下,把EditorHack.dylib放入,并替换libquazip.1.dylib即可。
自此,010 Editor成功破解。因为函数偏移计算的关系,附件中的破解补丁只适用于9.0.1。
附上补丁文件和相关分析的逻辑图。
010.zip
(921.33 KB, 下载次数: 12)
|