小试牛刀:iOS去广告入门实战

2015-09-08 312704人围观 ,发现 9 个不明物体 极客终端安全

写在开头

老婆最近心血来潮,想学英语,于是我用iPad在App Store上下了一个新概念英语全四册随身听免费版,功能倒还不错,老婆也蛮喜欢,就是有一点不好,下面有个大大的广告栏,一不小心就点到,烦死了,老婆有要求,我必然有求必硬了……

摸底

先上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安全的同学一点启发,因为我还算是新人,也在慢慢摸索中,很乐意能与对这方面感兴趣的同学有所交流,对于一些大小牛人吐槽之类的,就直接无视吧,毕竟再牛×的前辈也都被别人一路吐槽过来的,我只想做好自己该做的事,然后一步一步向自己喜欢的方向努力。

因为我坚信:总会有一天,我想学的东西,都能学会。

*本文作者:熊猫正正,本文属FreeBuf原创奖励计划,未经许可禁止转载。

相关推荐

这些评论亮了

  • 塔塔 回复
    学了新概念英语,再也不用担心媳妇儿漏气啦 :!:
    )9( 亮了
发表评论

已有 9 条评论

取消
Loading...
熊猫正正

微信公众号:安全分析与研究

30 文章数 16 评论数 0 关注者

特别推荐

推荐关注

活动预告

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php