class-dump 入门介绍及使用。
Decompile
class-dump安装方法
当Mac升级了OSX 10.11后,配置class-dump的时候,会发现推荐的class-dump无法放入目录/usr/bin
- 原因是 OSX10.11的一个新特性 Rootless,也叫System Integrity Protection(SIP)和SELinux差不多,都是限制root用户的权限
- 其实可以在RecoveryMode关闭这个特性,这样就直接可以读写
/usr/bin
了,不过不建议。
关闭方法:开机的时候按住option出现选择磁盘的界面按command + R进入RecoveryMode,选择实用工具终端,输入
csrutil disable
回车搞定
- class-dump下载地址
http://stevenygard.com/projects/class-dump/
安装方法1
查看磁盘根目录是否存在
~/bin
路径,存在就下一步,不存在,打开Terminal,输入mkdir ~/bin
,在当前用户根目录下创建一个bin目录。把下载下来的dmg打开,复制文件文件里面的class-dump到创建的bin目录下。赋权限:
chmod +x ~/bin/class-dump
打开bash_profile文件配置环境变量
vim ~/.bash_profile
- 按下 i 键进入编辑状态,在最下方加一行
export PATH=$HOME/bin/:$PATH
- 按下esc键, 再按
shift+:
输入wq!
进行保存退出编辑
在Terminal中执行
source ~/.bash_profile
执行
class-dump
测试是否成功,成功如下:
1 | MelodydeMBP:~ melody$ class-dump |
推荐安装方法2
- 下载后解压后会有class-dump和源码文件。
将
class-dump
复制到/usr/bin/class-dump
。- 如果是OS X 10.11,因为没有
/usr/bin
文件夹的写权限,所以将class-dump
复制到/usr/local/bin/class-dump
即可。
- 如果是OS X 10.11,因为没有
打开Terminal,执行命令赋予其执行权限:
1 | sudo chmod 777 /usr/bin/class-dump |
- 执行
class-dump
测试是否成功.
class-dump使用
命令如下:
1 | class-dump -H /Users/sevencho/Desktop/KYRemoteUnit.app -o /Users/sevencho/Desktop/headers |
-H 代表着要解析的文件
/Users/sevencho/Desktop/KYRemoteUnit.app 需要反编译的应用路径(解压.ipa包获得)
-o 表示解析完成保存的目录
/Users/sevencho/Desktop/headers 反编译出的头文件存放路径
利用 class-dump 可以导出 AppKit,UIKit
AppKit :
1 | class-dump /System/Library/Frameworks/AppKit.framework |
UIKit :
1 | class-dump /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework |