别人的 App 不好用?自己改了便是。嘿嘿嘿 篇

前言

我们团队里会互相分享买来的电子书,毕竟一本三四百,一人一本实在是太过于昂贵。PDF 私下看就好,Kindle 可以通过破解 DRM 的方式,然而 iBooks 上的书籍,一直没有什么好的方式。

最近我发现了一个软件叫做 iBooks Copy,他的未注册版本,只会 copy 出原书的 1/3 内容。完整版本请付费 $20+。 我试了一下 Swift 官方指南,没问题。再试了一下 《Core Image For Swift》,结果失败了。我就开始想是不是没付费的问题呢?

但又不想花一百多做一个不知道结果的尝试,于是能不能 Hack 一下呢?

lldb 挂载

先看一下这个软件的主界面:


点击 Convert 的时候,会弹出来购买对话框。于是我们的下手点,应该就是 Convert 的响应函数。然而 经过 Class-Dump,我懵逼了。


他貌似把重要的函数做了 MD5,那么我只能运行的时候找我想要的 Selector 了。

lldb 挂载 mac 应用比 iOS 简单太多,直接:

lldb /Applications/iBookCopy.app/Contents/MacOS/iBookCopy
process launch

需要暂停的时候就:

Control + C

为了验证是否工作正确,以及他会不会傻逼到把注册信息丢到 NSUSerDefault,我们随手 po 了一下。

po [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]



发现,就算有我们也看懂不懂,它加密了。

我们通过 Window 找到 ContentView,对他执行 _subtreeDescription,这个相当于 iOS 的 printHierarchy 方法。轻松找到了 Button 实例.


结果对其运行 Action 的时候,却死也打不出来 Selector:


有知道怎么解决的朋友,希望和我说一下。

好吧,换方向。

反编译 nib

我们知道,xib 是可读取的 xml,而 nib 是对应编译好的结果。我只要反编译 nib 了,就能知道那个 Button 的对应点击 Outlet。

经过搜了一下,发现有前辈做好了解决方案:https://www.dropbox.com/s/eyjt1337wpkrp9n/Compiled%20Nib%20Opener.nib.zip?dl=0

我们只需要右键选择显示包内容,把其中的 keyedobjects.nib 替换成它包中在语言文件夹下的 MMMainController.nib,返回到外面双击打开即可。


我们看到了,startAndStopButtonOnClicked: 
回到 class-dump 出来的头文件,发现,妈蛋被那堆 md5 晃瞎了眼,看漏了。。。

ida 分析

直接用 ida 打开对应方法,因为是 x64 架构,我们的 f5 大法没法用了。那就用传统方案吧。在 IDA-View 视图。


可以看到这个方法分了好几部分:

  • 最上面是点击事件,和初始化方法。
  • 左侧那一大块处理的是有关在转换中又点击了 Convert 的事件
  • 最下面是方法结束的处理
  • 右侧是开始转换的真正事件响应。

仔细看右边的三个框:


解读一下:

if ([a55dc69742234b29a344bcc29159a07f a409400facd64585b641b8e3eaffd69a]) {
    [self a0c19915aa804b03bc1d2d7fea69a4ad];
} else {
    [self a565787783594a8c89ddd096b22dae7b];
}

分别看一下两个方法:


第一张图上可以看到 checkItunesRunning 说明已经是 iBooksCopy 业务代码了,而第二张图上可以看到 MMRegHintController,说明是要弹出来这个对话框的。

那么,我可以猜测,我只要让这个方法永远返回 True 即可。

Dylib Hook

其实,可以通过 ida 直接改返回值为 1,但对 ida 不是很熟悉,怕玩脱了,就用了更加熟悉的方案。

首先,我们需要创建一个 mac library 项目,用于生成 dylib。
然后写上对应代码:


我们给它添加了一个叫做 FuckYou 的方法,并作了 IMP 交换。为了保证工作正常,加了两行 Log。

然后,把编译生成的 libWTF.dylib 丢入 /Applications/iBookCopy.app/Contents/MacOS/,执行 yolo iBookCopy libWTF.dylib

最后,双击打开,发现破解成功。

后记

写这篇文章的目的,并不是教大家如何破解软件。而是想告诉大家第三方途径或者说盗版 Mac 应用有多么可怕。这么简单几步,就能在神不知鬼不觉的情况下 Hook Dylib。

于是,我就可以监听全部键盘事件了;
于是我可以监听全部网络请求了;
于是我可以偷着打开摄像头了

想想看,这是个多么可怕的事情?
希望大家支持正版。

BTW

还是无法正常生成 CoreImage for Swift 这本书,但是可以生成完整的 Swift 官方文档。说明这个软件也就这么回事吧,罢了罢了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值