欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]解密iOS内核镜像kernelcache以及dump内核数据结构

[原创]解密iOS内核镜像kernelcache以及dump内核数据结构

解密iOS内核镜像kernelcache以及dump内核数据结构

zhuliang

前言

我们知道很长的一段时间固件内的iOS内核都是加密的,这不方便我们的研究分析,本文介绍几种方法解密iOS内核以能拖进ida pro分析。有时仅仅ida pro静态分析远远不够,如想了解kernel_pmap结构,还需要dump内核,本文介绍一种读内核任意地址,也就是dump内核的方法。

解密kernelcache

直到iOS10,内核kernelcache都是加密的,要分析它,就要先进行解密。有以下三种方法。

1.  OTA更新固件解压,OTA固件(https://ipsw.me/otas)里的kernecache是不加密的。下载解压便能拖到ida里进行分析。

2.  解密再解压。由于img3的解密网上已有很多例子,这里以iPhone5s设备iOS9的固件为例子。先到https://www.theiphonewiki.com查到固件对应keyiv,然后执行如下命令进行解密。

dd if=kernelcache.release bs=52 skip=1 | openssl aes-256-cbc -iv 06ae5b6dce2bc7c7299d0f55b066d680 -K 13c4bd389af426285e68d22c396e208f51c5d02b3dd5d3d42e01a3ce905d2c4b -nopad -d > kernelcache.d

再进行解压,如下

./lzssdec -o 0x180 < kernelcache.d > kernelcache.d.bin

至此,便可拖进ida pro进行分析。

3.  从越狱设备上dump

上面方法2要依赖keyiv,有些固件是查不到对应的keyiv的。这种情况可以考虑从越狱的设备上dump内核。要读写内核先要调用task_for_pid函数获取内核的消息端口,这需要相关的越狱工具在内核打了task_for_pid对应的patch。这就是为什么在越狱的iOS9下调用task_for_pid不能成功的原因,因于启用了KPP保护,盘古越狱没有打task_for_pid的补丁。

是不是意味着在iOS9下没法dump内核呢?上帝关上一扇门,盘古却打开了一扇窗。经研究发现,盘古越狱虽然没有打task_for_pid的补丁。但是却把内核的消息端口放到了数值为4的特别端口。见如下的代码:

kern_return_t task_for_ios9_pid(mach_port_name_t target_tport,int pid,mach_port_name_t *kernel_task)

{

    kern_return_t kr;

    kr = task_for_pid(target_tport, pid, kernel_task);

    if ( kr )

    {

        printf("[ERROR] %s Line %d, result=%08x: \n","task_for_pid",__LINE__,kr);

        kr = host_get_special_port(mach_host_self(),0,4,kernel_task);

        if ( kr )

        {

            printf("[ERROR] %s Line %d, result=%08x: \n","host_get_special_port",__LINE__,kr);

        }

        else

        {

            printf("Calling host_get_special_port(mach_host_self(),0,4,kernel_task),sucess!\n");

        }

    }

    return kr;

}

本文附件是开源的ios-kern-utils工具,但是该工具在iOS9下不能正常工作的,本人进行了上述修改,能让它顺利工作了。利用它里面的kmem,kmap,kdump等几个程序可以dump内核分析。

上传的附件 ios-kern-utils-1.tar.bz2
解密iOS内核镜像kernelcache以及dump内核数据结构.docx

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功