iOS逆向开发中如何锁定APP的目标类与函数
iOS逆向开发中如何锁定APP的目标类与函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
创新互联成立与2013年,是专业互联网技术服务公司,拥有项目网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元哈巴河做网站,已为上家服务,为哈巴河各地企业和个人服务,联系电话:18982081108
之前介绍了怎么获取APP的所有类的结构信息,这个有什么用呢?用处大了,比如以这一步为基础,下一步通过注入来做更多研究工作。
注入的最小单位是函数,实际上,编译执行的程序在编译后,类就不复存在了,留下来的只是二进制代码(指令或数据都是一样的二进制代码)。所幸的是,跟我们打交道的,并不是二进制代码(那会困难很多),而是函数,而且是某个类的函数。
那么,在用classdump拿到成千上万个类与函数后,哪个函数才是我们关心的呢?怎么锁定它们呢?
下面介绍锁定目标类与函数的可行的办法。
基本上小程研究的目标APP都有丰富的界面,而小程关心的场景基本都是由特定的界面触发,所以,从界面入手是个不错的选择。
有没有办法找出某个界面对应哪一个类呢?这样就可以在classdump拿到的众多的类中仔细研究这个界面类拥有的函数与成员变量。
小程觉得目前最好的办法就是使用Reveal工具。
(一)使用Reveal
先下载一个Reveal(有破解版本),比如1.6版本或1.5版本,或2.0版本。
(1)拷贝libReveal.dylib到手机
Reveal最大的一个作用是把手机上的某个APP的界面同步显示到电脑上,要做到这个效果,Reveal既要在电脑上运行,同时也要把一个“内鬼”打入到手机。这个打入手机的“内鬼”就是libReveal.dylib。
在电脑上运行Reveal后,点击菜单Help,选择Show Reveal Library in Finder,再点击iOS Library,就可以找到libReveal.dylib。
拷贝到DynamicLibrary目录下:
scp libReveal.dylib root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
基本上,手机上的APP在启动运行后,都可以加载DynamicLibraries里面的动态库(以dylib为后缀),至于加载哪个动态库,则由plist文件决定。这个知识点很重要,这意味着你可以写一个plist文件,让某个APP在启动时加载你写的动态库,这是注入的前提。
/Library/MobileSubstrate/DynamicLibraries,这个目录,在手机成功越狱后就会存在。
对于Reveal2.0版本,也以上面的办法定位动态库文件,但这个文件名叫“RevealServer”,可以拷贝过去后命名为“libReveal.dylib”即可。
(2)拷贝libReveal.plist到手机
找一个plist文件来修改,或者直接写一个plist文件,命名为libReveal.plist。
libReveal.plist文件要指定让哪个APP启动时加载Reveal.dylib,比如:
Filter
Bundles
com.tencent.QQKSong
上面的plist内容,让“全民k歌”启动时,加载Reveal.dylib。
com.tencent.QQKSong,是“全民k歌”的BoudleID。至于目标APP的BoundleID是多少,有很多办法可以查到,比如找到它的plist文件来查看,比如ps看进程信息,比如动态调试等等。
小白:如果不指定这个Filter呢,是不是所有的APP启动时都加载?
小程:iOS8之前的版本是这样的,但之后的版本都需要指定APP。所以,不管3724,加上这个Filter总是不会错的。
然后,拷贝libReveal.plist到手机:
scp libReveal.plist root@192.168.2.57:/Library/MobileSubstrate/DynamicLibraries
之后,在电脑上再次启动Reveal就可以连接目标APP,来分析界面类了。
比如,在手机上重启全民k歌,在电脑上重启Reveal并选择菜单项,连接全民k歌。可以看到,全民k歌的一个页面是这样(右下角的类名是重点):
(二)让全民k歌自动切换至歌手页面
为了“感性”一点,小程做一个演示,通过Reveal定位到全民k歌的目标类,并让全民k歌启动后自动切换至歌手页面。
首先通过Reveal,定位到底部导航条的所在的viewcontroller类是KSRootTabBarController。
然后,通过查看classdump翻译到的类结构中,找到这个类。可以看到,点击“我要唱”按钮,实际就是触发KSRootTabBarController::onClickTabBarItem函数。
接着,就可以hook这个类了,让目标APP自动跳转。这一步的具体操作,小程会在后续详细介绍,你只需要“感性”地知道这回事就好。
最终,自动跳转的效果是这样的:
以上讲解了Reveal的使用。Reveal是定位目标类与函数的有效的办法,除了这个办法,还有一个办法就是,观察所有类的类名,猜测可能有关系的类(比如应该具备某个关键字),再注入这些类的函数并用NSLog输出信息,或者动态调试观察执行的流程,最终确定目标类与函数。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
网页名称:iOS逆向开发中如何锁定APP的目标类与函数
文章位置:http://cdiso.cn/article/jiisod.html