手动破解moom,绕过Mac上moom的试用次数限制
本帖最后由 LeadroyaL 于 2019-12-26 19:19 编辑# Moom 介绍
Moom 是 Mac 上一款很常用的分屏小工具,主要就是为了把窗口靠左、靠右、铺满等操作,更多详情见官网的介绍:https://manytricks.com/moom/
它本身是一款收费软件,但是在试用期内可以无限制使用,之前用的是网上下载的破解版的 Moom,更新了之后就进入试用期了,不敢用网上其他人破解的版本,怕安插后门,于是自己修改了一下,挺简单的,改几个字节就可以。
本文使用的版本号是:Version 3.2.16 (3277)
# 操作
### 确定函数范围
先搜字符串,试用期的计算是试用Moom的功能100次,有文本可以搜,`grep "Mooms remaining" * -R`,发现是在`/Applications/Moom.app/Contents/MacOS`文件里。
超过100次之后,每次使用会弹出如下窗口,尝试搜字符串"Your 100-use trial limit has been reached. In order to continue using Moom, please buy a license.",也在这个文件里
### 确定校验函数
恰好上文提到的这两个字符串都出现在这个函数里
`char __cdecl -(PMMainController *self, SEL a2, char a3, char a4, char a5, char a6)`
我看不懂objc写的程序,大致的逻辑是,检验试用次数,弹窗,最后返回一个0 或 1,看起来返回0就是校验通过的意思。(如果不是,就试试改成1 行不行,还好我改成 0 就可以用了)
### 修改为永远返回0
中间的逻辑太复杂了,直接从函数开头跳到函数结尾,在结尾处 `xor eax,eax`就行。
```
__text:00000001000180B8 push rbp
__text:00000001000180B9 mov rbp, rsp
__text:00000001000180BC push r15
__text:00000001000180BE push r14
__text:00000001000180C0 push r13
__text:00000001000180C2 push r12
__text:00000001000180C4 push rbx
__text:00000001000180C5 sub rsp, 58h
.......
__text:00000001000188E3 add rsp, 58h
__text:00000001000188E7 pop rbx
__text:00000001000188E8 pop r12
__text:00000001000188EA pop r13
__text:00000001000188EC pop r14
__text:00000001000188EE pop r15
__text:00000001000188F0 pop rbp
__text:00000001000188F1 retn
```
这里是函数开头结尾保护寄存器的代码,不可以乱改,容易出问题。把`00000001000188E3`前的最后一条汇编改成`xor eax,eax`,把`00000001000180C5`后的第一条汇编改成jmp指令,就能完成我们的目标。
最终汇编的效果是:
```
__text:00000001000180B8 push rbp
__text:00000001000180B9 mov rbp, rsp
__text:00000001000180BC push r15
__text:00000001000180BE push r14
__text:00000001000180C0 push r13
__text:00000001000180C2 push r12
__text:00000001000180C4 push rbx
__text:00000001000180C5 sub rsp, 58h
__text:00000001000180C9 jmp loc_1000188E0
.........
__text:00000001000188E0 xor eax, eax
__text:00000001000188E2 nop
__text:00000001000188E3 add rsp, 58h
__text:00000001000188E7 pop rbx
__text:00000001000188E8 pop r12
__text:00000001000188EA pop r13
__text:00000001000188EC pop r14
__text:00000001000188EE pop r15
__text:00000001000188F0 pop rbp
__text:00000001000188F1 retn
```
最终的diff是:(以Version 3.2.16 (3277)为准)
```
00180C9:
45 89 cc 45 89 -> e9 12 08 00 00
00188e0:
0f be c0 -> 31 c0 90
```
最终效果:完全正常使用(我已经使用了一个月了,没有任何问题)
# 2019年11月29日17:52:47 更新:刚刚偶尔发现,本文其实是不完美的,因为测试时候 SIP 是关着的就没注意到这个细节,只有关闭 SIP 后才能成功,否则如果文件被修改了,Mac 操作系统会拒绝执行它。【强烈建议不要学我,请开启 SIP】
# 2019年12月04日17:45:29 再次更新:解决SIP 引起的无法篡改,额外patch 2 个字节
首先有一个命令,用来移除签名字段。注意这里移除的是App的签名,不仅仅是单独可执行文件的签名。
```
codesign --remove-signature Moom.app
```
之后执行,Moom会报错,如图,说已经被篡改请不要使用。
对此,我们去搜索相关的内容,找到了如图的代码,看起来是先弹框然后退出。
外层是由一个if-else控制的,我们把跳转语句nop 掉,就不会走到这个函数了,对应的 patch 位置是:
```
00DCD1
74 0f -> 90 90
```
# 完美收工!
整个Moom.app太大了无法上传,仅上传原本的文件Moom的二进制文件,完整的Moom.app可以在官网下载到:https://manytricks.com/download/_do_not_hotlink_/moom3216.dmg
端倪 发表于 2019-11-13 16:56
有没有Mac版的图片处理软件,最好跟Windos的画图软件一样操作,因为我找了很多软件,都没那个感觉,谢谢了
Paintbrush 还行,感觉略笨拙一些 Coolman 发表于 2019-11-15 14:27
Paintbrush 还行,感觉略笨拙一些
谢谢,我试试,希望不是跟Pixelmator一样就好了 很难搞吧这个 顶,大神就是多 :lol不明觉厉 默默的膜拜大神 不明觉厉,也米有MAC帮顶 搞破解好像就是看懂他逻辑的吧,自身的逻辑思维也要强 厉害了。。。。 对于我这种小白难度还是太大了{:1_937:} 学习了,编程还是我的弱项,哎