当Mac升级了OSX 10.11后,配置class-dump的时候,会发现逆向书上推荐的class-dump存放目录/usr/bin,class-dump存放不进去,尝试过用sudo 还是不被允许。
原因是 OSX10.11的一个新特性 Rootless,也叫System Integrity Protection(SIP)和SELinux差不多,都是限制root用户的权限。
其实可以在RecoveryMode关闭这个特性,这样就直接可以读写/usr/bin了,不过不建议。
(关闭方法:开机的时候按住option出现选择磁盘的界面按command + R进入RecoveryMode,选择实用工具终端,输入csrutil disable回车搞定)
查找网上的资料,目前我用的方法是改变 class-dump 的环境变量来使用。
class-dump下载地址:http://stevenygard.com/projects/class-dump/
首先打开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
测试是否改变成功
测试结果为:
MelodydeMBP:~ melody$class-dumpclass-dump3.5 (64bit)Usage:class-dump[options] where optionsare:-a show instance variable offsets -A show implementation addresses --arch choose a specific architecture from a universal binary (ppc, ppc64, i386, x86_64, armv6, armv7, armv7s, arm64) -C only display classes matching regular expression -f find stringinmethod name -H generate header filesincurrent directory,ordirectory specified with -o -I sort classes, categories,andprotocols by inheritance (overrides -s) -o output directory usedfor-H -r recursively expand frameworksandfixed VM shared libraries -s sort classesandcategories by name -S sort methods by name -t suppress headerinoutput,fortesting --list-arches list the archesinthe file,thenexit --sdk-ios specify iOS SDK version (will lookin/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk --sdk-mac specify Mac OS X version (will lookin/Developer/SDKs/MacOSX.sdk --sdk-root specify the full SDK root path (oruse --sdk-ios/--sdk-macfora shortcut)MelodydeMBP:~ melody$
到了这里 class-dump的安装基本完成了^ ^
例如:class-dump -H /Users/电脑名字/Desktop/wcha/WeChat -o /Users/电脑明/Desktop/ijk->随便取的文件夹
参考链接:
http://bbs.iosre.com/t/10-11-usr-bin-class-dump/1936/8
http://blog.csdn.net/majiakun1/article/details/52064435
作者:San心两yi_钟
链接:https://www.jianshu.com/p/025fa775f3a6