- 问题背景
- 解决方法
- 总结
阅读之前注意:
本文阅读建议用时:5min
本文阅读结构如下表:
项目 | 下属项目 | 测试用例数量 |
---|---|---|
问题背景 | 无 | 0 |
解决方法 | 无 | 0 |
总结 | 无 | 0 |
问题背景
上一篇文章已经解压了kernelcache,现在目标就是从解压文件中,再提取出单独的内核驱动。因为kernelcache中包含各种驱动,解压后也还是是一个文件,并没有做驱动分离。
解决方法
提取出单独的内核驱动,使用的工具是p-joker,这个工具是国内深信服的一个逆向专家(好像也是趋势科技的专家)写的,已经在github上开源,支持 iOS10/11/12/13 kernelcache。
不过这个工具虽然用起来简单,但初期的环境配置比较麻烦。
首先,目前这个工具只支持python2;其次,需要安装多个python库依赖;最后,需要特定的capstone(next分支)。
首先是安装自带的2个依赖,进入对应文件夹运行python2 setup.py install
,结果提示我还有其他依赖没有安装。
于是,我依次安装了如下 python库依赖:(1) pip2 install nose
(2) pip2 install tornado
(3) pip2 install --ignore-installed --user numpy==1.7.1
(之所以这么装,是因为我之前装了一个numpy==1.12.0的版本,结果不行,然后又卸载不了,而nose\tornado是1.12.0版本的依赖)。
用pip2,则是因为该工具只支持python2。
另外,/p-joker-master/pyiokit/src/IOKitConnectionBase.h中的#include <boost/python.hpp>
有用到boost-python,因此也需要安装boost-python。因此我运行了如下指令:(1) brew install boost
(2) brew install boost-python
。
经过上述操作,再次进入对应文件夹运行python2 setup.py install
,2个自带的依赖安装成功了。以下是安装成功截图:
最后安装capstone,capstone安装很简单,去github下载next分支,参考其中COMPILE.TXT,在macOS上依次运行(1) ./make.sh
(2) sudo ./make.sh install
即可。这时使用p-joker,会提示无法运行,因为p-joker用的是python形式的capstone。
于是参考/Downloads/capstone-next/bindings/python/README.txt。在该路径下运行python setup.py install
,再把/Downloads/capstone-next/bindings/python路径下的capstone文件夹拷贝到p-joker-master文件夹下即可。
此时运行python2 p-joker.py /deCompressedFile/Path/kernel -K com.apple.iokit.IO80211Family -d /Your/Destination/File/Path
,终于拿到了单独的内核驱动。
上述步骤可能有多余的:(1)可能不需要安装nose\tornado这2个依赖;(2)可能不需要brew install boost
;(3)可能根据COMPILE.TXT编译安装capstone这一步是多余的;
因为我也是一路试过来的,所以也可能也有漏掉的依赖,不过那些应该问题不大,欢迎留言补充。
总结
解压kernelcache后,因为还是单独的一个文件。所以需要用到p-joker来提取单独的iOS内核驱动。
如果本文对你有帮助,不如请我一罐可乐吧 🎃