本文转自 余成海的博客

首先学习资料:


其次讲讲要用到的工具(iOS 中的工具在 Cydia 中搜索安装, 有些需要数据源可以自行查找):

  • 已经越狱的iOS设备:这个必须要有

  • OpenSSH (数据源:http://apt.saurik.com): 用于ssh远程登录和scp文件传输

  • class-dump: 用于简单分析出工程中的类名和函数名

  • IDA:强大的反编译工具

  • Hopper Disassembler:类似IDA 我比较喜欢, 能简单转换成 OC 的伪代码

  • Reveal: UI层解析工具

  • iFunBox、iTools :两个都是强大的 iOS 设备管理工具, 越狱后能轻松读取应用文件等功能


差不多就这么多了, 上面的工具大部分都是收费的, 不过都是有试用版的, 接下来我们一个个分析:

1. 越狱的 iOS 设备

这个我就不讲了吧, 不过我要赞盘古团队一个, 目前所有 iOS 系统都可以越狱(包括iOS 8.x)

2. 在 iOS 设备上安装 OpenSSH

数据源: http://apt.saurik.com, 然后用 Mac 远程登录 iOS

ACA80166:~ yuchenghai$ ssh root@172.168.1.100

然后输入密码, @后面是手机的 IP, 越狱后默认密码默认是 123456 或者 alpine

传输文件的命令是:

scp gdbinit root@172.168.1.100:/var/root
scp root@172.168.1.100:/var/root/123.txt ~/

3. class-dump

class-dump是一个强大的函数提取工具,非常好用,也是基础工具

可以发到手机里调用, 也可以在电脑上调用, 要解析的文件是在应用目录下 xxx.app (里面还有用到的所有文件资源, xxx是你要分析的应用名), 下面以唱吧 为例, 用 ifunbox 找到应用进入应用目录就可以看到 ktv.app 了打开包文件就能找到ktv

$ class-dump ktv > ktv.txt       //导出所有内容到文件
$ class-dump -H ktv -o ktvdir/   //导出所有内容目录到文件夹(首先要创建ktvdir文件夹)

这里会有一个问题, 就是从app store下载的应用解析出来会是乱码, 因为应用被加密了 解决办法

  1. 去渠道上下应用, 如同步推、91

  2. 砸壳, 工具如dumpdecrypted 、 Clutch

class-dump 只能解析出类名和函数名, 不能看到具体的实现逻辑

4. IDAHopper Disassembler

这两个差不多, 能看到每个函数的具体逻辑(但是都是汇编) IDA很强大, 能在后面标记的OC的函数名, 但是我更喜欢Hopper Disassembler, 因为他能简单的模拟出OC源码, 但是也是非常简单的. 两者按空格键都能显示出分支逻辑来

汇编非常难看懂, 我们需要的是耐心+耐心. 后面可以加上动态工具联合分析能更有效

5. Reveal

Reveal 的功能就更强大了, 能分析出 UI 的具体结构来, 告诉你每个 View 的类型是什么, 这通常也是我们常用的分析一个 app 的切入点

下载完后打开 reveal 在菜单目录中 help-show reveal library in finder 打开库文件, 将两个文件发到手机里

scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework root@192.168.0.X:/System/Library/Frameworks
scp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib root@192.168.0.X:/Library/MobileSubstrate/DynamicLibraries

接下来编辑 libReveal.plist 文件

/Library/MobileSubstrate/DynamicLibraries/ 下创建文件 libReveal.plist, 指定 app 的 Bundle, 可以指定多个

{   
    Filter = {  
         Bundles = ("com.changba.ktv");   
    };   
}

同学们会问了, app 的 bundleID 怎么查看呢, 我们还是用 ifunbox 工具找到应用目录, 在xxx.app 文件夹中会有 info.plist 文件, 打开就能找到

最后重启设备, 打开想分析的应用, 电脑打开reveal接口, 就可以点击分析了