文章目录
  1. 1. 引言
  2. 2. dumpdecrypted
  3. 3. Cycript
  4. 4. class-dump
  5. 5. Hopper
  6. 6. FAQ
    1. 6.1. Cycript

引言


逆向分析软件,就是为了更好的开发软件,借他人之长,补己之短。

dumpdecrypted


dumpdecrypted:用于解密二进制文件,将当前应用 .app 应用包下的 tmp 目录,并输出二进制结果。 在电脑端进行编译,获取 dumpdecrypted.dylib

1
2
$ cd dumpdecrypted  // cd 到 dumpdecrypted 目录下
$ make //(建议不要修改参数, Xcode 与 iOS 系统保持一致?)

注:如果你的手机系统也是 iOS 9.3.3 ,我这正好有一份与之相对应 dumpdecrypted.dylib 文件。(提取码: 3gtx)

Cycript


Cycript 可以从运行状态下的可执行文件中提取一些有价值的信息,使用 Cycript 与正在运行的程序可以交互,可与 weak_classdump.cy 结合使用,它的功能类似下面讲的 class-dump 。
下面使用 Cycript 获取应用的 Documents 路径,将 dumpdecrypted.dylib 导入其中。

1
$ ssh root@IP // 通过 ssh 连接到手机上

运行 ps -e 命令,获取正在运行的应用的进程

1
2
$ ps -e  
1960 ?? 0:04.58 /var/containers/Bundle/Application/A7E477AA-A1B1-4A8C-890A-9114A2956C50/SportTarget.app/SportTarget

借助 Cycript 找到 App 的 Documents (注:control + d 退出 Cycript 命令行)

1
2
3
cycript -p 进程号(进程名) // 1960(SportTarget)
cy#[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
#"file:///var/mobile/Containers/Data/Application/B3EBD03F-E9E0-4619-B843-7AA1BB1F1E54/Documents/"

将 dumpdecrypted.dylib 拷贝到手机中;cd 到存储 dumpdecrypted.dylib 文件目录下,将 dumpdecrypted.dylib 文件拷贝到 App 刚刚得到的 App 的 Documents 下

1
2
$ scp dumpdecrypted.dylib [email protected]:/var/mobile/Containers/Data/Application/B3EBD03F-E9E0-4619-B843-7AA1BB1F1E54/Documents/
[email protected]'s password:

在手机终端 cd 到刚刚得到的 Documents 目录,执行下面命令,可以获得 *.decrypted 文件。

1
Ggs-iPhone:/var/mobile/Containers/Data/Application/B3EBD03F-E9E0-4619-B843-7AA1BB1F1E54/Documents root# `DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/containers/Bundle/Application/A7E477AA-A1B1-4A8C-890A-9114A2956C50/SportTarget.app/SportTarget`

将获得 SportTarget.decrypted 文件导出,在电脑端执行

1
$ scp [email protected]:/var/mobile/Documents/SportTarget.decrypted ~/Documents/safe/dumpdecrypted  //scp -r  可以拷贝文件夹

class-dump


分析类的定义、查看汇编指令和二进制构建的其他内容,可以使用 class-dump 处理任何未加密的 iOS 二进制文件。例如处理上面得到解密的 SportTarget.decrypted 文件
class-dump:常用于提取 Objective-C 2.0 版本二进制文件中的类信息,输出结果相当于二进制文件的头文件。

Hopper


在没有源代码文件的情况下,可以通过反编译软件查看应用程序的实现逻辑。类似反编译软件有 IDA ProHopper,由于 IDA Pro 价格昂贵,推荐使用 Hopper 软件进行查看。打开 SportTarget.decrypted 文件可以查看相关信息。

FAQ


Cycript


0、提示 -sh: cycript: command not found ,需要在手机端进行安装 Cycript 命令工具
1、运行 DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib + 进程名,报 Killed: 9 错误。以下解决方法

1
2
3
4
5
$ scp dumpdecrypted.dylib [email protected]:/usr/lib   //将 *.dylib 文件复制到 /usr/lib 目录下
# su mobile //在手机端切换 mobile 用户
# cd /var/mobile/Documents //cd 到 mobile 用户的 Documents 目录下
// 在此目录下运行下面命令,得到 *.decrypted
# DYLD_INSERT_LIBRARIES=/usr/lib/dumpdecrypted.dylib /var/containers/Bundle/Application/A7E477AA-A1B1-4A8C-890A-9114A2956C50/SportTarget.app/SportTarget

参考资料


1、http://wufawei.com/
2、iOS wiki

文章目录
  1. 1. 引言
  2. 2. dumpdecrypted
  3. 3. Cycript
  4. 4. class-dump
  5. 5. Hopper
  6. 6. FAQ
    1. 6.1. Cycript