使用p-joker提取单独的iOS内核驱动

996.icu LICENSE

  • 问题背景
  • 解决方法
  • 总结

问题背景

上一篇文章已经解压了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内核驱动。
还有其他工具也欢迎补充,好像有一个叫做Htool的也挺不错。
如果本文对你有帮助,不如请我一罐可乐吧 :jack_o_lantern:
在这里插入图片描述

参考资料

  1. python2.7 更新numpy出错 ERROR: Cannot uninstall ‘numpy’
  2. ImportError: No module named capstone
  3. 用Python玩玩反汇编,一个好玩有趣的全能型的反汇编引擎Capstone
  4. Python3中”except Exception, e: 语法无效“原因及解决方法
  5. 在OS X 中安装boost.python, 使用homebrew
  6. python库安装方法及下载依赖库
  7. (MacOS)Python设置pip源为国内源
  8. joker-使用joker抽取iOS 11的kernelcache
  9. iOS kernel初探
2 个赞

是直接解压了kernelcache后,然后把解压的kernel直接拖进IDA吗?IDA有版本要求吗?我用的解压工具是Jtool2,因为joker被整合进了这个工具(就jtool2 -dec /File/Path/kernelcache)。

我也奇怪,几十兆的东西,没必要去提取

萌新提问,这个核心驱动,干什么用那?