LeadroyaL 发表于 2019-11-13 14:50

手动破解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

Coolman 发表于 2019-11-15 14:27

端倪 发表于 2019-11-13 16:56
有没有Mac版的图片处理软件,最好跟Windos的画图软件一样操作,因为我找了很多软件,都没那个感觉,谢谢了

Paintbrush 还行,感觉略笨拙一些

端倪 发表于 2019-11-15 15:42

Coolman 发表于 2019-11-15 14:27
Paintbrush 还行,感觉略笨拙一些

谢谢,我试试,希望不是跟Pixelmator一样就好了

ankangtai 发表于 2019-11-13 14:53

很难搞吧这个

wangleilei1226 发表于 2019-11-13 14:54

顶,大神就是多

星海you云 发表于 2019-11-13 14:59

:lol不明觉厉

liu114685 发表于 2019-11-13 15:08

默默的膜拜大神

夏之天狼星 发表于 2019-11-13 15:20

不明觉厉,也米有MAC帮顶

三木零 发表于 2019-11-13 15:24

搞破解好像就是看懂他逻辑的吧,自身的逻辑思维也要强

SCL 发表于 2019-11-13 15:41

厉害了。。。。

minite 发表于 2019-11-13 15:50

对于我这种小白难度还是太大了{:1_937:}

ljw19891989 发表于 2019-11-13 16:15

学习了,编程还是我的弱项,哎
页: [1] 2 3 4 5 6
查看完整版本: 手动破解moom,绕过Mac上moom的试用次数限制