第二部分主要讲解了如何进行iOS的app的类的获取,使用工具进行反汇编以查看业务逻辑,最后综合以上信息,实现对app运行时操作的修改。

以上用到的工具主要包括:

  • Dump Starbucks app's classes using class-dump
  • Disassemble the Starbucks app using Hopper
  • Runtime manipulation using bfinject cycript

首先是class-dump,该工具用于分析app的二进制文件并从中提取类以及一些变量数据。由于现在iOS app的开发通常混合使用Objective-C和Swift,所以dump工具也分为两种,对应这两种开发语言。Dump的意思为对程序中的一些数据进行转储,主要是运行时的动态数据转储为静态文件,这样就可以更清楚地了解程序运行时过程。

接下来使用Hopper工具对二进制文件进行反汇编,它可以自动解析mach-o文件格式,并将二进制数据反汇编为汇编指令,也可以生成伪代码。从中查找一些关键的字符串可以定位一些关键的逻辑函数,进而分析类、类中的方法、函数之间的调用关系和功能等信息。【这里需要实践和经验,但是我还完全没弄过。。。】

cycript工具可非常方便的用于修改、调试iOS app。使用cycript注入目标应用的线程中,相当于对目标进行动态插桩,通过cycript提供的交互终端,可以向app注入一些命令并执行,但并不是永久修改。本机上需要安装cycript,并且iOS端也需要启动bfinject cycript,这感觉就像是GDB远程调试一样,本机的GDB和目标机上的GDBServer的关系。【交互命令也需要学习的!】有了交互的终端界面,就可以输入命令获取反馈或者对app进行修改了。

 

After:

  • 虽然大致的步骤作者写的很清楚,但是dump,反汇编的东西其实都不知道怎么看,更不知道能怎么用。
  • 所以需要多看多读这些汇编。
  • 然后cycript的命令行指令都可以咋用。