前言
上一篇介绍了用dumpdecrypted砸壳方法,觉得超级麻烦有没有?难道没有更方便的操作吗?嘻嘻,我们要感谢这位大佬,同时他也是MonkeyDev的作者,他弄了个工具,让我们可以一键砸壳,执行一个命令,便可以得到ipa包,进而用class-dump导出头文件,是不是很爽?废话不多说,直接进入主题,第三种方式-Frida。
准备
- 越狱的iPhone - 安装frida - 打开cydia添加源: https://build.frida.re - 打开这个源,安装frida 
 
- 电脑安装usbmuxd,class-dump,python,wget,pip - usbmuxd可通过下面命令安装,前提是你Mac装了Homebrew - 1 
 2- brew install usbmuxd 
- 如果你安装了或者打算装 Monkey Dev 的,就可以不用装 class-dump,因为它里面已经自带了。自己安装 class-dump 可以通过此地址下载,下载后打开,把里面的 class-dump 复制到 /usr/local/bin 路径下,打开终端,执行: - 1 
 2- class-dump - 成功安装好class-dump~ 
- 使用命令安装python - 1 
 2- brew install python - 如果你之前装过python,要把python切换到2.7,因为frida是在2.7环境下运行的。 
- 使用命令安装wget - 1 
 2- brew install wget 
- 使用命令安装pip - 1 
 2
 3
 4
 5- # 先执行 
 wget https://bootstrap.pypa.io/get-pip.py
 # 然后再执行
 sudo python get-pip.py
 
过程
安装Frida
- 安装 frida for mac - 终端执行: - 1 
 2- sudo pip install frida - 如果报了个错误含有six报错的,例如 - 1 - Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project. - 执行下面命令解决(网上好多都是一个 -,其实是两个 -): - 1 - sudo pip install --upgrade frida --ignore-installed six 
- 配置 frida-ios-dump 环境 - 执行下面命令下载安装:- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11- # 创建文件夹 
 sudo mkdir /opt/dump
 # 到此目录下
 cd /opt/dump
 # git下载下来
 sudo git clone https://github.com/AloneMonkey/frida-ios-dump
 # 安装
 sudo pip install -r /opt/dump/frida-ios-dump/requirements.txt --upgrade
- 因为这是和iOS建立连接用的,所以修改 dump.py 的一些ssh参数- 到这个目录(/opt/dump/frida-ios-dump/)下打开dump.py这个文件,修改里面参数: - 1 
 2
 3
 4- User = 'root' 
 Password = 'alpine'
 Host = '127.0.0.1'
 Port = 12345
 
- 为了方便输入命令,我们给dump设置别名 - 终端输入: - 1 
 2
 3
 4
 5- vim ~/.bash_profile 
 # 按e选择编辑,然后再按i,你才能修改内容,在最后添加
 alias dump.py="/opt/dump/frida-ios-dump/dump.py"- 然后按esc键,输入保存命令: - 1 - :wq - 然后我们要使别名生效: - 1 - source ~/.bash_profile 
砸壳
- 链接手机 - usb插上iPhone,终端输入: - 1 - iproxy 12345 22 - 这里切记端口号要和你上面dump.py里面设置的端口号一致 
- 保持你要砸壳的app在前台,终端执行: - 1 - dump.py -l - 找到你想要砸壳的app,执行: - 1 - dump.py WeChat - 你会看到屏幕会一直在跳动,直到出现 - 1 - 0.00B [00:00, ?B/s]Generating "微信.ipa" - 砸壳后的ipa包就已经在你运行命令的目录下了,你可以执行ls查看,并且用mv命令移到你想放的地方:  
导出头文件
- 拿到可执行文件 - 从上面砸壳我们已经成功得到砸完壳的ipa包了,右键解压,然后你会发现一个Payload文件夹,右键显示包内容,在里面找到 WeChat 这个文件,把它复制出来放到你喜欢的路径下,这就是微信的可执行文件啦,我们要利用这个文件来导出头文件。 
- 导出头文件 - 用class-dump导出头文件,到终端执行: - 1 - class-dump -H <你放WeChat可执行文件的路径> -o <你打算放导出的头文件的文件夹路径> - 是不是很舒服,用frida,论站在巨人的肩膀能省多少事。 
总结
至此,三种方法砸壳&获取头文件演示完毕,个人非常推荐最后这一种方式砸壳,简单快捷,省下来的时间用来分写他们的代码好过。最后希望文章能帮到各位读者,有错欢迎指教,砸壳获取头文件这只是个开始,接下来的逆向之路还很长,笔者继续潜心修炼去了。
 
    
    
    
     
    