您的位置:首页 > 移动开发 > IOS开发

iOS逆向之动态分析(腾讯视频广告移除)非会员

2018-03-17 15:36 525 查看
前言:iOS逆向分析之动态分析,我开始思考怎样把原理讲的深入浅出,怎样把故事讲的有趣生动,于是本来写好的动态分析又操了重来,那么今天我准备带着问题来讲动态分析,先抛出我们这次逆向的目标,腾讯视频广告移除,以此为例讲解动态分析。首先我们进入视频播放页,点击最近的热片《战长沙》,进入详情页如下图,VIP可关闭广告,那么这个详情页肯定会有与与VIP广告相关的业务,我们只要找到对应的ViewController然后丢给Hooper反编译就应该可以看到VIP相关的业务函数。那么怎么知道这一页对应的ViewController呢,有2种办法,一种全局hook viewDidLoad 在这里断点看vc,还有直接看视图堆栈。在分享这篇文章之前小编先分享自己建的一个“iOS程序员开发者的QQ群”“638302184”每天都会有开发者分享案例一起探讨工作中的问题,群里还会分享阿里面试题及各大BAT面试题,不管你是小白还是大牛欢迎入驻,大家一起交流学习



图1





图2先不猜了,去Hooper里看下这个类到底有哪些相关的方法,这里要用到iOS逆向分析之静态分析(二)介绍的内容,这里不做重复,丢进去就惊呆了,尼玛这方法真吉尔多,我这里只贴一屏与广告相关的,但是仔细分析后并没什么卵用。



图3通过上面静态分析的内容并不能提供明显的思路让我去广告,我准备回到UI堆栈那里,我在这里发现了QNBPlayerVideoAdsViewController,看名字就知道播广告的,邪恶的笑下,鹅肠同学名字起得真是清晰明了,这次试一下直接hide这个控制器看广告会不会消失。



图4我写了如下代码以后,很暴力直接隐藏了广告视图,发现广告会消失一会儿,然后又显示,经过静态分析发现QNBPlayerVideoAdsViewController这个类里边有adsStartPlay,那我更暴力一点,在这个方法里只要你播广告我就影藏这个view,command r运行,看电视剧,妥妥的没广告了,最终代码如下。



图5故事讲到这里算是讲完了,有兴趣的同学可以加入我们的交流学习群:638302184,整体而言,这次分析的过程比较顺利,我们可以看到在逆向过程中是动态,静态分析结合相互提供线索一步步逼近真相,我们现在复盘,通过复盘来来解密我们使用的工具,以及这些工具背后的原理。       我们这次动态分析使用的是IPAPatch,和这个类似的有AloneMonkey的MonkeyDev,这俩库原理类似核心思想都是将我们自己写的代码编成动态库注入目标App,然后重签,作为一个有情怀的开发者,仅仅会使用工具肯定不是我们的目标对不对,我们要做的是探究这个过程是如何实现的,这里我抛出几个问题动态库是如何注入的?App重签名的过程是怎样的?今天我们大概简单聊聊有个印象,这些内容每一个点都很重要,都是逆向的基础知识,虽然枯燥但是,但可以让你更好的理解这些原理。如果要理解动态库注入那还需要更深入的理解Mach-o的文件结构,我在上篇文章中简单讲了下,这里再详细的讲下,一个典型的Mach-O文件格式如图所示



图6通过上图,可以看出Mach-O主要由以下三部分组成:Mach-O头部(mach header)。描述了Mach-O的cpu架构、文件类型以及加载命令等信息。加载命令(load command)。描述了文件中数据的具体组织结构,不同的数据类型使用不同的加载命令表示。Data。Data中的每个段(segment)的数据都保存在这里,段的概念与ELF文件中段的概念类似。每个段都有一个或多个Section,它们存放了具体的数据与代码。二进制当中所有引用到的动态库都放在Load commands段当中,那么我们只要,通过给这个段增加记录,就可以注入我们自己写的动态库了,对不对。那么问题来了,在这里插入我们自己的动态库有什么用?我们自己写的代码没有执行的入口,一样什么都不能干,我们还需要一个”main”函数来执行我们自己的代码,不要忘了,这个”main”函数在oc里面称为构造函数,只要在函数前声明 “attribute((constructor)) static” 即可,这样你的代码就可以被目标APP执行了。关于重签名,有兴趣的同学可以学习下整个签名过程,包括代码如何签名,证书如何校验等,重签名大概过程如下,1、解压ipa安装包 cp test.ipa olinone.zip2、替换证书配置文件(文件名必须为embedded)cp embedded.mobileprovision Payload/test.app3、重签名(certifierName为重签名证书文件名,可以加证书ID后缀)certifierName="iPhone Distribution: olinone Information Technology Limited(6a5LOVE58MYX)"codesign -f -s $certifierName  --entitlements entitlements.plist Payload/test.app4、打包 zip -r test.ipa Payload至此逆向系列的入门教程已经全部更完,现在应该拿到一个App应该已经可以自己玩了,篇幅有限,有很多内容不能展开讲,也没讲到,比如有攻就有防,了解防才可以更好的绕过,如何为自己的App加固,再比如一些细节符号表是怎样恢复的,砸壳的原理到底是怎样的,这些有趣的话题我们只能后边再聊,更多骚操作,尽在iOSTips,关注公众号,第一时间get新姿势。附静态分析工具集:Dumpdecrypted:砸壳class-dump-z: 用于简单分析出工程中的头文件和函数名IDA:强大的反编译工具Hopper Disassembler:类似IDA附动态分析工具集:IPAPatch,MonkeyDev:Reveal 界面分析        CaptainHook,Tweak 编写hook代码,或自定义功能
在分享这篇文章之前小编先分享自己建的一个“iOS程序员开发者的QQ群”“638302184”每天都会有开发者分享案例一起探讨工作中的问题,群里还会分享阿里面试题及各大BAT面试题,不管你是小白还是大牛欢迎入驻,大家一起交流学习
文章来源于网络,如有侵权,请联系小编删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: