破解 Sublime Text 4200 ARM64
1 TL;DR
1 | # 修改文件 |
2 序
其实 4200 版本在半年前就出来了,但是我一直懒得更新,最近它开始频繁弹提示了,我才准备更新。
打算翻翻 Github Gist 上的破解方法,却发现帖子被删了,看来还是写在自己的地盘最靠谱,就让我再水一篇吧。
3 破解
3.1 顺藤
在 4200 版本,原有的 x64 的破解方法失效了,不过新的方法也很容易找:
搜索二进制数据:
1 0F B6 51 05 83 F2 01替换为:
1 C6 41 05 01 31 D2 90
看看这次改了什么?
修改前:
1 | ; 从 rcx + 5 指向的内存读取 1 字节数据,存到寄存器 edx。 |
修改后:
1 | ; 将 rcx + 5 指向的 1 字节内存设置为 1。 |
再用 Cutter 看一下上下文代码:

一切都是那么的熟悉,和上个版本的思路可以说是分毫不差,连修改的函数都没变。
结论:
- 破解关键在
edit_window::on_update_state函数内。 rcx + 5指向的 1 字节内存,存储着全局注册状态,1 表示已注册。- 寄存器
edx存储临时注册状态,0 表示已注册。
3.2 摸瓜
接下来反编译 arm64 版本,找到 edit_window::on_update_state 函数,来到这段:

翻译翻译:
1 | ; 从 x8 + 5 指向的内存读取 1 字节数据,存到寄存器 w9。 |
参考 x64 版本的汇编代码,可以得出推论:x8 + 5 指向的 1 字节内存即为全局注册状态。
假定用户已注册,则指令执行到 0x10020dcc0 处时,寄存器 w9 存储的值应该为 0。
那么,修改后的汇编代码就是:
1 | ; 借用 w9,将 x8 + 5 指向的 1 字节内存修改为 1。 |
破解方法:
搜索二进制数据:
1 09 15 40 39 4a 00 80 52 3f 01 00 71 e9 13 8a 1a替换为:
1 29 00 80 52 09 15 00 39 09 00 80 52 4a 00 80 52
4 参考资料
同上篇博文。