Sketch!一次悸动的小逆向尝试

581 查看

丙戌月 癸酉日

故事从一开始应该是这样的:最近一直在使用Sketch,然而呢,直到某一天弹出这个着实让我惊叹不已:

11266748-83d9e9f013df5c7e

想着今天是1024专属日,于是乎上官网看看然而发现并没有限免,万年不变的价格也是出奇的合理,99美元能买到这样一款优秀到超出想象,好用到违反广告法的软件真的是赚到了。

12266748-dc348c05c7f2b9c8

看看还有没有其它类似的App,要不找找看有木有破解版?故事的结尾刚要如此,然而笔锋一转,情节立马一波三折,没想到用盗版软件的也会有自己破解软件的今天-_-||。因为最近刚看完了一些iOS逆向开发的书,奈何没有越狱的设备,只好在OS X上练练手。正所谓道法自然,虽平台,工具不同,但内功都是一样的。

不忍直视的弹窗

现在先让我们为这个万恶的弹窗默哀一分钟,接着就开始仔细关注分析一下有哪些入手点。仔细一看就会发现,那个welcome界面依然还在的,也就是说主程序仍然是可以使用的,只是在其上多出了一个如下图的提示注册的弹窗,获取了当前的焦点,以至于我们无法进行其他的操作。

13266748-91ffda0ada2b9727

所以我们的任务很简单啦,要么在register上做文章,弄清楚注册流程和算法(第一次我就不要不要试这个了,顿时压力好大);要么在quit按钮上做文章,使其只关闭弹窗但不退出整个程序;或者在判断是否Trial Expired的过程中做手脚;最后,还有最简单的,但是却不优雅的,就是直接去掉弹窗就好了。

工具嘛,IDA或Hopper Disassembler按自己的喜欢就可以了,这里我就用Hopper Disassembler就可以了。开始前也可以class dump一下头文件看看,会有助于后面的分析,这里我就不用了。

那就开始咯

进入Sketch.app目录,找到Sketch二进制文件把它丢进Hopper里然后坐等分析,分析完后如下图:

14266748-f87915cb6c826845

Hopper这个软件很强大,不过是收费的,但提供免费试用的,试用版的每30分钟会退出一次(咳咳,用自己来破解自己,想想就可怕)。

我们在左边搜索一下弹窗出现的相关关键字Trial

15266748-b01a7bfafa36a52d

从字面上,我们一眼就能看出每个类每个方法的作用,其中BCTrialCountdown这个类我猜就是负责计算剩余试用天数的,里面的trialPopUpWithNumberOfDays方法应该就是那个不厌其烦每次弹出提示我们还有多少天过期。

BCTrialExpiredWindowController应该就是我们要找的弹窗的controller,有showquitvisitStoreregisterLicense等方法,嗯,没错,就是它了。这样我们就很快定位到相关函数了。

下面我们来仔细看看show方法的汇编代码: