如何破解一个 macOS 应用.

嗯我总算开这个坑了. 真是不容易(

当然调子是要定下来, 写不写得完是个问题.

首先你需要一个反编译器, 你用 gdb lldb 还是 IDA 还是 Hopper 都可以, 反正我是用 Hopper.

首先打开可执行文件, 这个一般是 /Applications/xxx.app/Contents/MacOS/xxx.

这里使用某软件做个例子.

此处应该有图 <- Surge.hop

然后根据这个软件本身的设计, 可能有以下关键词 「 Activate 」 「 Activation 」 「 Trial 」 「 Register 」 「 License 」 等, 根据对这个软件的使用来看.

在某软件中, 有几个关键词, 例如首先我们打开它就会弹出一个窗口来询问我们是否要试用或者注册.

所以我们搜索 Register, 找到一个类 [WindowController registerButtonPressed:]

然后关注到其中一个 call, 根据猜想, 按下按钮的时候他就会进行校验, 那么一定会有一个校验函数.

我们跟踪至 sub_10009fa8a.

这里可以看到一行字符串, 提示其已经被激活, 那么可以得知

000000010009faa3         cmp        eax, 0x2
000000010009faa6         jne        loc_10009fb78

这个就是关键.

其中 eax 由 sub_1000391f8 运算得到, 对比 eax 和 0x2 的值, 若不等就激活失败.

这里可以通过更改 jne, 或者 cmp, 或者你自己想的办法, 总之让他进入下面的正常激活流程即可.

当然如果你能写出算号器那是最好的…

修改完毕后生成新的执行文件, 覆盖即可.


Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.