看雪论坛
4

【原创】如何调试iOS内核

zhuliang 2012-10-23 32725
ios内核调试不像win和linux内核调试那么简易,操作起来比较麻烦,本文介绍如何进行ios内核的调试,word版 如何调试iOS内核.rar

如何调试iOS内核
作者:zhuliang
转载请保证文章完整并注明来源

本文对如何调试iOS(iPhone OS)内核进行简单的介绍,讲述iOS内核调试的环境搭建,调试步骤等。

iOS是用XNU内核,XNU for mac的代码可以从苹果官方下载到,当然不是最新版的。XNU内核有既相互独立又相互交互的三个组件构成,这三个组件是:Mach、BSD、IOKit。

首先,是硬件与软件的准备。

硬件方面,一台越狱的设备是必需的,建议用iPhone4(注iPad2或iPhone4S由于采用的是苹果A5的cpu,它的bootrom目前还没有公开漏洞,不能用红雪设置引导参数,不能使用它来调试)。内核调试数据线,该数据线含有USB转串口的电路,可以参考文献1来自己焊接,本人制作好的调试线如下图,限于篇幅这里不对如何制作调试线展开讨论。一台电脑,可为台式机或笔记本,mac更佳。



软件方面,虚拟机VMware,mac操作系统比如Lion,XCode等。

其次,是环境的搭建。

Mac环境,由于iOS的内核调试要在mac操作系统平台下进行,所以首先要搭建mac环境,最好用真实的mac机,也可用虚拟机,本文为方便没有mac的朋友,以虚拟机为例进行讲述,用真实mac机的朋友可根据具体的情况随机应变。具体步骤如下,先在电脑上装虚拟机(如VMware)软件,然后在虚拟机里面装mac操作系统(比如Lion),装好mac系统后下载XCode并装上。如果觉得这样太麻烦的话,可直接从电驴下载装好Lion的虚拟机。

有了mac环境后,在mac操作系统里装好USB转串口芯片的驱动程序(可从http://www.ftdichip.com/Drivers/VCP.htm下载),装好驱动后就可用ls /dev/tty.usb*来看一下有没有把串口识别出来。识别出来后如下面的图所示。然后下载本文附带的SerialKDPProxy程序源代码SerialKDPProxy_m.rar(该源码是由Albert_liuwei从参考文献1提供的SerialKDPProxy修改而来,特此声明),并make一下,你懂的。将得到的SerialKDPProxy文件cp到/bin下,这样不用每次都要切换到这个目录下才能执行。



最后,搭建好了环境后就可以进行调试了,主要有三个步骤:

一是运行串口代理程序,用下面的命令行。

SerialKDPProxy /dev/tty.usbserial-A900c0xb


这里的tty.usbserial-A900c0xb要替换为在你的系统上具体的设备名,上文ls /dev/tty.usb*的结果。

二是用红雪设置引导参数。该步骤可以在物理主机Windows系统下面进行,因为命令行涉及到一个几百M的文件,复制到虚拟机里比较麻烦。可以在Win下用下面的命令行。

redsn0w.exe -i "D:\Apple\iPhone3,1_4.3.3_8J2_Restore.ipsw" -j -a "-v debug=0x09"
该命令输入完毕回车后,红雪会让你按它的提示进入dfu模式。进入dfu后稍等一下,会看到小菠萝人在手机屏幕上。看不到的话,可能是进入dfu模式出错。

接下来切换到mac环境工作,进入虚拟机环境之前要确认USB转串口的设备前点的钩已钩上。如下图:



三是用gdb调试ios内核。所用的命令行参数如下:



gdb -arch armv7 (gdb) target remote-kdp (gdb) attach 127.0.0.1


在win下面。串口从设备管理器里看出来是COM8.代理程序用这个命令行:

./SerialKDPProxy.exe /dev/com8 


启动gdb的命令是
./arm-apple-darwin-gdb.exe

其它的都是和se的ppt像一样。

至于具体怎么调试,熟悉linux下用gdb进行调试的朋友能相当熟练地调试,也可以参考本人的另一文章《iOS如何利用ARM的MMU进行地址映射》。

最后

感谢DarkMage(dm557),Windknown,Daniel,Albert_liuwei,cd-team及各位朋友!
参考文献:

1.        SysScan-Singapore-Targeting_The_IOS_Kernel.pdf(可输入google找到)
2.        http://www.cd-team.org/wp-content/uploads/2011/09/PWN你的iOS设备_New.ppt

如何调试iOS内核.rar
最新回复 (40)
ydfivy 2012-10-23
2
附件无效啊。
4
zhuliang 2012-10-23
3
哪个附件无效呢?我试了都能下载的。
蓝色妖女 2012-10-23
4
真的是高科技的东西啊
BoyXiao 2012-10-23
5
只能顶礼膜拜了
Artmiss 2012-10-23
6
前排占位膜拜,顺便学习一下~
guobing 2012-10-23
7
帮顶,,,果然厉害
6
yuansunxue 2012-10-23
8
玩不起:eek:
kmsmxpro 2012-10-23
9
新东西,高科技,学习
3
xPLK 2012-10-23
10
才在虚拟机把Mac装上的路过……
swlilike 2012-10-23
11
本本装MAC 硬盘差点 废掉的 飞过
hoyer 2012-10-23
12
ios  高科技。
GeminiZane 2012-10-23
13
-___-#
搞iso那必須的軟硬件都來啊...
messen 2012-10-24
14
高端 只能顶礼膜拜
ouyangtian 2012-10-24
15
膜拜楼主:D:
3
hellok 2012-10-24
16
感谢分享
更好奇那个线怎么做的
http://www.podgizmo.com/ 这个?
国内有么
4
zhuliang 2012-10-24
17
这个也可以的。但是淘宝网上有更便宜的。电路是按参考文献1的pdf上的线路连上的。
option 2012-10-24
18
没有玛尼的路过
linhanshi 2012-10-25
19
Thanks for share.
雅蠛蝶 2012-10-28
20
必须顶礼膜拜!
menfon 2012-11-24
21
真的是膜拜啊!!
polelf 2012-11-27
22
围观 mark一下
1
pmma 2013-1-5
23
学习了,回头调试下touch
hacker一疒亻 2013-2-25
24
越了狱了,然后再调试内核,目的只能是写软件或者是程序了,而不是研究JB。话说能不能逆向一下那个evasi0n或者是以前的几款越狱软件,看看究竟是用了什么方法,什么原理,什么BUG来越狱ios设备的。
4
zhuliang 2013-2-28
25
好好研究ios hacker's handbook 就知道原理的。论坛上有这书。要用很多个漏洞才能完成越狱的。
hacker一疒亻 2013-2-28
26
[QUOTE=zhuliang;1146595]好好研究ios hacker's handbook 就知道原理的QUOTE]

这本书的原版我拥有的时间远远先于这个版块成立的时间,不过这本书的网间翻译只进行到了第二章就停止了,那个翻译小组群也没有动静了。

有好些的英文术语看不太懂,话说比较费力……  

不过我之前回复你的原因不在于是否要了解越狱的原理,因为就算看懂了那本书也不能实现越狱,这种事只有少数几位才能做出来,毕竟需要的工具、知识量、技巧以及IOS设备和系统的频繁升级的干扰等,还是变数太多了……   我的意思是你发布这篇调试内核的文章的实际作用是什么?  

因为你的文章讲述得一切是在越狱之后才能进行的,那么这个时候已经不是用来指导或者是窥看如何越狱的了(后者可能不全面),而只能是用来开发软件的,那么问题是哪一类软件的开发会需要到内核方面的内容呢?  想学习一下……

再有一点也确实需要哪位大牛可以把前几代越狱软件逆向一下,以便一看其“尊容”

还有一点就是我也想学习一下你用得那个线是具体是如何制作得?   包括配件的购买渠道最好也能分享一下,这一切对于一个不曾搞过电路的人来说很重要。
abeyy 2013-11-7
27
那些搞越狱的, 一开始是没有越狱设备的啊, 是如何调试的呢
vangoals 2013-12-23
28
这个问题问得好啊,我也想知道
sybl 2013-12-28
29
可以调试IO7固件不呢?
4
zhuliang 2013-12-29
30
可以是可以的。但是有好几个地方要修改。初学者往往很难做到。
内核要patch,而patch内核的.sh文件要修改。这要求对iOS理解得比较深入才能达到。
6
jerryxjtu 2013-12-30
31
从这个列表上看,要调试iOS7,只能上IPHONE4...
http://theiphonewiki.com/wiki/VFDecrypt_Keys
ITOUCH4G的good old day啊
2
proteas 2014-5-13
32
内核上需要低于iOS5,系统上在OS X Mavericks 下已经不适用了。
kgxxx 2014-5-15
33
超神了~
大头和尚 2014-7-11
34
软硬通吃,高高手。
CRoot 2014-7-11
35
不明觉厉 走过 还得继续学习才能搞掂啊
SoBeIt 2014-8-23
36
用红雪修改iPhone 4的bootrom启动参数, 只要有ipsw固件文件, ios 7也没问题吧, 只要越过狱的.
4
zhuliang 2014-8-24
37
这个你要试过才知道。
据我了解,针对iOS7是不行的。
红雪引导的过程是要patch内核的,如果它没有iOS7内核的解密key,或者它不知道patch哪里,没法引导iOS7的。

我一般都是用自己的程序引导的,不用红雪。
zxc 2015-3-6
38
你好,使用这个代理在mac还是会产生大量kdp_transaction (kdp_attach): transaction timed out错误。
gdb-1821 使用的是xcode最后一个支持gdb的版本。
不知道为什么显示汇编是arm. 已经设置了-arch armv7.  不能自动切换到thumb 模式,造成感觉设置断点无效。
首次停下来后conntinue就跑飞了。 不知道是gdb问题还是代理问题,还是都有问题。请问你是如何解决的。
海洋hiya 2016-7-28
39
版主, 想咨询你一下, 有办法在应用程序内打开高通diag端口吗?(设备已越狱)
xudongsaar 6天前
40
ios调试线网上有没有购买推荐的地方?
方振箱包 1天前
41
路过
返回



©2000-2017 看雪学院 | Based on Xiuno BBS | 知道创宇带宽支持 | 微信公众号:ikanxue
Time: 0.013, SQL: 11 / 京ICP备10040895号-17