FauxPas试用时间破解

FauxPas试用时间破解

以下内容仅用于学习逆向工程。用到的工具有Hopper,lldb。

FauxPas是一款非常不错的项目检查工具。之前写过用FauxPas找到潜在Bug,介绍了FauxPas的功能。在使用过期后,尝试hack一下。

绕过证书窗口

使用的是1.4版本的FauxPas,先拖入Hopper,找到方法-[XAAppDelegate applicationDidFinishLaunching:]。读汇编代码到00000001000043cc时,可以看到一个条件跳转,后面的方法有 @selector(enterLockdownMode)@selector(trialNagVC) 。那么看起来这里如果不跳转会跳出试用失败窗口,我们修改成

00000001000043cc jmp 0x10000446b

这时候运行起来,打开了程序的主窗口,但是无法使用,菜单栏的打开是禁用的。

解锁UI

这个问题解决起来花费的时间比较多。将AppDelegate里的调用去掉了,UI依然未解锁。最后想到了直接去搞getter方法。找到了方法-[XAAppDelegate userInterfaceEnabled]:,这个方法里唯一的跳转,通过lldb调试发现走到了跳走的分支。我们把跳转禁用,UI就可以使用了。

0000000100004e56 nop

阻止Sparkle弹窗

现在可以使用了,但是每次打开应用都会提示Insecure update error!。可以从弹窗中读到使用了Sparkle来做程序升级。在GitHub上的项目里搜索这段错误代码,找到所在的类SUUpdater。在代码里找到调用的地方

0000000100004cbd         mov        rdi, qword [ds:objc_cls_ref_SUUpdater]

lldb调试也证实这里会在启动时被调用,随后弹窗。然后让后面调用的逻辑失效。

0000000100004ccb nop

消除窗口过期提示

暂时还不知道怎么修改静态字符串。找到了加载的地方,阻止跳转到添加提示的代码段。

000000010010aa71 nop

解除试用倒计时

至此基本完成了,唯一的遗憾是打开项目开始检查时会有15秒的倒计时,暂时还没有找到hack的方法。

Comments

comments powered by Disqus