iOS逆向攻防实战( 二 )


其中是我事先封装好的一个接口文件,部分接口实现如下:
实例二:获取按钮点击事件
还可以获取某个按钮的点击事件,也就是方法名,这对我们分析代码逻辑有很大的帮助,比如我们在使用某社交APP时,使用某个付费功能,如果你是非会员就会弹出一个会员引导弹框,这时候我们可以通过分析这个点击事件,看能否绕过付费的代码逻辑直接使用付费功能 。
5.1.2. /
/是一款强大的UI调试工具,可以调试任何一个iOS应用 。它可以在运行时查看App的界面层级关系,还可以实时修改程序界面,不用重新运行程序就可以看到修改之后的效果,免去了每次修改代码后又重新启动的过程 。逆向工程里面通常用 / 来快速定位感兴趣的控件,进而找到控制器,再用进行事件分析 。
()
()
5.1.3.Flex
Flex是一个iOS应用的内部调试工具 。当它加载时,会向目标程序上方添加一个悬浮的工具栏,通过这个工具栏可以查看和修改视图的层级结构、动态修改类的属性、动态调用实例和方法、动态查看类和框架以及动态修改UI等 。
5.1.4.class-dump
class-dump是一个命令行工具,它利用-C语言的运行时特性将二进制文件中的类、方法及属性等信息导出为头文件 。
下载方法:从下载最新安装包,双击打开,将“class-dump”拖动到/usr/local/bin目录下即可使用 。
以为例来讲解它的使用方法:
class-dump -S -s -H . -o ./
5.2.攻击手段二:监听和拦截函数调用
Frida是一个跨平台的轻量级Hook框架,支持所有主流操作系统,它可以帮助逆向研究人员对指定的进程进行分析 。它主要提供了精简的接口和功能丰富的JS接口,除了使用自身的控制台交互以外,还可以利用将JS脚本库注入目标进程 。使用Frida可以获取进程详细信息、拦截和调用指定函数、注入代码、修改函数、从iOS应用程序中dump类和类方法信息等 。
Frida能实现很多功能,以下介绍几种比较常用的功能:
5.2.1.获取可用设备列表
●frida-ls-
图中显示有一个连接usb接口名为的设备 。
5.2.2.获取设备进程列表
●frida-ps -U //-U代表连接到USB设备
图中显示该设备正在运行的进程有文档表格编辑,其id为2432 。
5.2.3.结束设备上的某个进程
frida-kill -U 2432//2432就是上面所获取的文档表格编辑的id
在终端运行之后就会立即杀死文档表格编辑进程 。
5.2.4.跟踪函数/方法调用
跟踪函数:比如跟踪id为9218的进程中的函数:
frida-trace -U -i9218
当触发该方法时会在终端输出 。
跟踪OC方法:比如跟踪文档表格编辑中 控制器中的方法
frida-trace -U -m "-[. *]" 文档表格编辑 //由于该app做了代码混淆处理,经过分析,类名需要.这样调用才行 。
每次进入 界面的时候就会触发,如图终端中输出了2次,代表 触发了2次方法 。
5.2.5.拦截某个类的所有方法
比如以下场景,文档表格编辑的教程界面,点击Word文档之后,如果是非会员就会弹出解锁功能界面;那么如果我想知道从点击Word文档到跳转解锁功能界面的这个过程中会调用到哪些函数,我们就可以利用frida进行跟踪 。
首先使用找到Word文档按钮所在的控制器 。
如上图所示,所在控制器为 。
编写js脚本对类的所有方法进行拦截
然后用frida加载该js脚本
frida -U -l .js 文档表格编辑
运行脚本后,效果如上图所示 。
关于Frida更多的功能请参考官网

iOS逆向攻防实战

文章插图
5.3.攻击手段三:静态分析