先上Reveal看看软件的整体UI框架再说吧,如下图:
整体框架还蛮简单的,就一个UILayoutContainerView,我们可以很清楚的看到广告View的Banner其实就是一个GADBannerView(不得不说Reveal真的是iOS逆向神器),这下就好办多了
因为是从app store上下载的,先“砸壳”吧,我这里使用的是Clutch,主要是方便,你也可以用其它工具,因为此软件没有啥Extension之类的,如果有的话,可以参考念茜的 如何脱Extension 。
如图所示:
我这里将NCE-v1.2-(Clutch-1.3).ipa重命名为NCE-Cracked.ipa一下(也是为了方便),将脱壳后的ipa传到我的电脑上,class-dump,ida已经等不急了……
unzip NCE-Cracked.ipa -d NCE
解压缩ipa,得到里面的mach-o文件,如图:
然后上class-dump导出头文件
class-dump -a -A -H NCE -o NCE-Headers
如图:
发现里面有一个ADManageriPad类,是不是管理iPad广告的,里面有一个GADBannerView属性,如图:
不管了,先试试这个行不行吧,能过theos创建一个Tweak工程,然后编写如下代码,进行hook,看广告条能否消失?
然后make,make package,make install之后,iPad重启SpringBoard之后,打开应用,广告仍在,说明广告操作重点不在这个类里面,上ida分析一下吧。
我们来看GADBannerView里面的几个重点函数:setAdUnitID,adUnitID,setDelegate,rootViewController
里面都有一个slot这个东西,比较奇怪,然后我们再看GADBannerView的函数列表:
发现最后有两个函数slot,setSlot,进去看看,如图所示:
里面设置GADBannerView的slot为GADSlot类实例,同时我们来看GADBannerView dealloc函数,如图:
发现在dealloc函数中,取消了观察者,我们再去看GADSlot这个类吧,这个类有可能是我们的关键类
从上面这些类函数和下面的这些类的定义,如图:
我们可以推判出,这个类有可能是我们要寻找的关键类,从类的函数中我们可以发现一个很明显的函数:
- (void)showAd:(id)arg1 withBaseURL:(id)arg2; // IMP=0x0018c5f4
但这个就是我们要找的吗?很简单,编写一个Tweak试一下罗,这里我写下步骤吧(给入门的同学)
然后编写Tweak.xm文件,如下:
#import <iAd/ADBannerView.h> %hook GADSlot - (void)showAd:(id)arg1 withBaseURL:(id)arg2 { } %end
里面啥也不做,直接为空就可以了,然后make,如图:
make package
编译好deb,然后我这里直接通过make install进行安装,你也可以把deb拷到ipad中然后通过dpkg进行安装,如图:
(注意这步这前要设置THEOS_DEVICE_IP地址)
重启SpringBoard之后,我们再打开应用,整个广告条都消失了……
这样就完成了,软件的navigationbar上有一个btn可以去广告,如图:
不过需要花六块钱吧,土豪朋友可以支持一下原作者哈,呵呵
我从Ipad转输这个Ipa时发现竟然有几百mb,原来里面有一个db数据库文件,就是这个软件的整个数据文件,这样这款软件就可以离线使用了,还是比较方便,如图:
本来想用MesaSQLite打开看看,没想到加密了,查看ida发现有一个FMDatabase类,之前做过一些小软件,用过这个第三方库,直接步入主题吧:
找到加密的key,如图:
密钥Key:vNei9Yi$59OS$ec@rSr9eu,然后知道了key,你只能通过逆向程序去重写一个数据库操作解密,还是无法用MesaSQLite打开查看数据库……
作为一篇很初级的技术分享,没有什么技术含量,各位大牛,小牛,牛人就请直接忽略就好了,有什么疑问,可以直接发私信联系我。代码我已上传到 github ,(其实也没啥代码,呵呵)。对于比较懒的同学可以直接去威锋我的源 下载deb文件 ,然后安装就可以了。
一点题外话:这篇文章也像我的上一篇那么简单,写这样简单的文章,只为了两件事:
(1)给一些对IOS安全感兴趣的朋友一点参考,相互交流。 (2)手头紧,赚点奶粉钱,哈哈。
希望这点认识能给想做iOS安全的同学一点启发,因为我还算是新人,也在慢慢摸索中,很乐意能与对这方面感兴趣的同学有所交流,对于一些大小牛人吐槽之类的,就直接无视吧,毕竟再牛×的前辈也都被别人一路吐槽过来的,我只想做好自己该做的事,然后一步一步向自己喜欢的方向努力。
因为我坚信:总会有一天,我想学的东西,都能学会。