破解 Sublime Text 4215
1 TL;DR
1 | # 应用 x64 补丁 |
2 序
因为一直用着的 Sublime Text 又弹窗更新了,所以只好撸一撸这个新版了。
这次懒得上网搜了,直接自己从零开始,把 x64 和 arm64 的部分都研究一下。
3 破解过程
3.1 反汇编
首先还是导出 x64 和 arm64 平台的二进制文件:
1 | lipo -thin x86_64 -output st4215-x64 \ |
然后进行反汇编:
1 | # 使用 objdump 可以导出 Intel 语法的 x86-64 汇编指令 |
3.2 破解 x64 版本
先来破解 x64 版本,因为我平时工作用的还是 x64 架构的 macOS,方便验证。
用 Sublime Text 打开 st4215-x64.asm,搜索 edit_window.*on_update_state,就能看到熟悉的代码:

不同的是,之前注册状态存在偏移 5 字节的位置,这次存在了偏移 0xc 字节的位置,看来结构体有了点儿变化。
这次也按照同样的思路,将这两句汇编指令:
1 | movzx edx, byte ptr [rcx + 0xc] ; 0f b6 51 0c |
修改为:
1 | mov byte ptr [rcx + 0xc], 1 ; c6 41 0c 01 |
x64 版本破解补丁:
搜索二进制数据:
0f b6 51 0c 83 f2 01替换为:
c6 41 0c 01 31 d2 90
打补丁并重新签名后,再次运行 Sublime Text,显示已注册:

3.3 破解 arm64 版本
再打开 st4215-arm64.asm,并搜索 edit_window.*on_update_state,找到同样逻辑的代码:

将这 4 句汇编指令:
1 | ldrb w9, [x8, #0xc] ; 09 31 40 39 |
替换为:
1 | mov w9, 1 ; 29 00 80 52 |
arm64 版本破解补丁:
搜索二进制数据:
09 31 40 39 4a 00 80 52 3f 01 00 71 e9 13 8a 1a替换为:
29 00 80 52 09 31 00 39 09 00 80 52 4a 00 80 52
4 其他系统
似乎 x64 版本的破解补丁,可以用于 Windows 和 Linux 平台的 Sublime Text,欢迎验证。