class-dump & Clutch 分析 APP 内部实现

自学 iOS 开发的一些经验,是一篇充实有料常看常新的开发文章,提到了 “class-dump 从 Mach-O 文件生成 OC 头文件,有时想看看某个 App 大概是如何组织的会比较方便”。刚好最近项目想学习一下别人的APP,尝试了7-8个小时终于成功了,记录一下过程。最主要是介绍 Clutch 的文章太少,其输出路径被卡壳。

##class-dump 安装

  1. 下载地址 http://stevenygard.com/projects/class-dump/
  2. 终端中输入open /usr/bin
  3. 将解压出来的class-dump放入刚打开的目录。
  4. 更改class-dump权限 sudo chmod 777 /usr/bin/class-dump

##class-dump 用法

1
2
class-dump Name.app > class-dump.md  
class-dump -H Name.app -o folderName

第一行表示输出为一个文件方便搜索查找,第二行表示输出所以 class 到 folderName 文件夹。

解密工具 Clutch

由于 App Store 对 ipa 文件进行了加密,就有了下面的解密过程。

Clutch on GitHub:

Introducing Clutch, the fastest and most advanced dumping utility for the iPhone, iPod Touch, and iPad.

Works with all devices, iOS versions, architecture types, with most binaries.

This product is meant only for educational purposes and security research.

Compiling: Use Xcode with iOSOpenDev installed

可以直接去 Releases 下载编译好的版本,复制到 /usr/bin

1
2
3

scp ~/Downloads/Clutch root@192.168.0.X:/usr/bin

参看:iOS 使用Class-dump分析App内部实现:

Openssh,然后电脑端使用ssh连接真机(默认密码是alpine),输入命令Clutch后会看到一个App列表,找到sing在列表中的序号是3,执行命令Clutch 3,这时它就真的开始运行了,运行后的结果是将原Appstore App转换为ipa文件;最重要的是,它被解密了~

1
2
3
Clutch 

Clutch -d 3

但是在 Clutch 2.0 版目录改为:/var/mobile/Documents/Dumped/ 或 User/Documents/Dumped/,导出 ipa 即可开始 class-dump。

Clutch 2.0 Dumped folder