看雪论坛
发新帖
5

[原创]iOS安全入门

zhuliang 2013-1-5 14:43 122182
iOS安全入门
     iOS安全版成立也有一段时间了,为让更多的朋友和我们一起玩iOS系统,为引导更多的人加入iOS系统研究的队伍中来,本人将在接下来的日子里陆续地写些文章到论坛上来。希望对朋友们进行iOS研究能有所帮助。
从学习iOS经验和所掌握知识的角度,本人计划在一年内完成下面所列提纲的文章(完成后给出连接),旨在引导新手朋友们一步一步地学习研究iOS系统。由于水平有限,所列提纲也许不完善(有些在研究中的内容将来会加入),欢迎朋友提出批评或建议,本人将适当地进行修改。同时也欢迎朋友们就下面的提纲积极发贴讨论;也欢迎就平常遇到的问题发贴提问,让我们一起讨论解决。
欢迎有关iOS的新闻、编程、安全,应用等方面的贴子。

1.  基础篇
     为了让更多的人能够和我们一起玩iOS,不至于让没有Mac机或没有iOS设备成为门槛,我们可以先利用虚拟机和模拟器来玩。并实现在没有开发者证书的情况下编写iOS应用程序并放到设备后运行。
1.1  在VMware上安装Mac Mountain Lion和XCode(http://bbs.pediy.com/showthread.php?t=158455
  有了Mac系统系统才可以编写iOS平台的程序,为方面没有Mac机的朋友,我们可以在Windows下用VMware来装Mac系统和XCode。
1.2  在Mountain Lion上编写iOS应用程序并在模拟器上运行测试效果
  在安装好XCode的Mountain Lion上编写第一个iOS程序并在模拟器上运行。我们知道Android有模拟器,我们可以从google play上面下载apk软件包下来,放到模拟器上运行。但是对于iOS不能从app store上面下载ipa软件包下来放到模拟器上执行。原因在于apk软件包里面可执行的部分是java字节码,不管手机还是pc机,用java虚拟机解释引擎都能解释就能执行。但ipa软件包里可执行的是arm机器码,不能在x86的pc机上运行的,因为这样,我们只能用XCode编写iOS程序,并让该程序在模拟器上运行。
1.3  学习iOS安全从哪些方面入手,需要打好哪些基础?
  用类比的方法,想想我们学习Windows安全的时候从哪些方面学起,介绍iOS安全的学习从哪方面学起。并推荐相关资源。
很多人都想学习iOS,由于这方面技术资料不多,初学者一般不知从哪里开始,没有方向,造成浪费大量时间和精力,这里给对iOS感兴趣的朋友指明前进的方向,只要持之以恒,每天都进步一点点,我相信,用kanxue在论坛里的话来说就是“n年后,你就是“专家”了”。2006年时本人来看雪论坛这里看到众多大牛发的贴子,觉得那是何等的神秘与高深莫测啊!后来慢慢地了解熟悉后就觉得没那么神秘了。
讨论前,先来了解一下iOS设备(如iPhone、iPad、iPod、AppleTV等,下同)中的运行的程序。这些程序是用C/C++或Objective-C这样的高级语言来编写的,最终会被编译成机器语言在CPU中执行。这个道理和电脑上的一样。由于机器语言与汇编语言是一一对应的。而汇编语言可能读性是比较好的,这样就可以分析程序流程,了解其功能了。iOS安全研究的基础是建立在ARM汇编语言级别上的,因此想深入研究这一领域的朋友,一定得学好ARM汇编语言。ARM汇编语言是很多嵌入式系统的书里都有介绍的。
ARM汇编:这方面本人推荐两个资料,一是《ARM体系结构与编程》杜春雷.pdf,其它的书也差不多的,这本书不上传到论坛以避免法律风险纠纷,输入文件名问度娘就可以得到。另一个是附件里的苹果官方的参考资料《ARM® Architecture Reference Manual Extracts Including instruction set descriptions.pdf》。
高级语言:相信很多朋友早已掌握了C/C++语言。再学习掌握Objective-C语言就好。建议没掌握C/C++语言的朋友在学习ARM汇编之前,最好先掌握一门高级语言编程,这样再学汇编应容易些。推荐附件里的两本书:Objective-C.for.iPhone.Developers.A.Beginner's.Guide(McGraw-Hill.2010-5).pdf和Learning.ObjectiveC.2.0(Addison.Wesley.2010-07).pdf
嵌入式硬件相关知识:iOS设备是嵌入式系统,和电脑或多或少有些不同。嵌入式硬件相关知识不是一定要掌握,但掌握后会有好处并能让你理解得更深入透彻。比如,能容易地看懂附件里的iPhone4手机的原理图(iphone4原理图.pdf),分析、阅读Openiboot的源代码(https://github.com/iDroid-Project/openiBoot)也能更快理解。本人对嵌入式系统学习研究的兴趣,是大学时一个哥们做的一件事激起的。这哥们追求一女生,在她生日那天编写单片机程序,让单片机唱《生日快乐》歌曲来哄她开心,后来,用现在很流行的话来说就是“女孩很感动,然后拒绝了他”,简称“十动然拒”。本人对这哥们十分钦佩,同时也对嵌入式系统无比神往。后来,通过学习研究,搞明白了一些原理。比如,DDR、Nor Flash、Nand Flash、LCD、UART、I2C、SPI等接线、时序、如何读写等等,最后实现了在ARM开发板上移植编译运行uC/OS2。
Unix基本知识:掌握Unix的常用命令让你能更好地操作iOS设备,像查找文件、建立、删除目录、用户管理等等命令。还有iOS下的调试工具是gdb,不管用户态还是内核态的。熟悉gdb的相关命令对iOS的调试来说是如鱼得水。推荐参考资料为附件里的gdb quick reference.pdf。
iOS SDK编程:很多功能都是通过调用iOS系统提供的接口来实现的,在Win平台就就相当于Win API,这个很重要,推荐参考资料为附件里的Beginning.iOS.5.Development.Exploring.the.iOS.SDK.David.Mark.Jack.Nutting.Jeff.LaMarche.pdf和Programming.iOS.4.Matt.Neuburg.pdf。
有了上面这些基础,你就能进行更深入的研究了,到此本人强烈建议购买苹果设备,经济条件允许的话,就买Mac机和iOS设备。实在困难的话,就只买iOS设备,比如买个iPod touch4,在淘宝、赶集、58同城等网站上400-900元可以买到。特别注意的是:iOS设备要买A4以前的cpu的,否则调试不了内核的哦。

2.  入门篇
     有了上面谈到的基础就可以进行iOS安全的入门研究了,通过这些入门研究对iOS系统就有个大体的了解了。
2.1  iOS系统启动过程简述
2.2  iOS的固件结构概述和解压解密分析
2.3  Bootrom的提取(dump)及所用的代码分析
2.4  iBoot解密和加载内核功能的分析
2.5  iOS应用程序的编写
2.6  iOS应用程序的调试与分析
2.7  iOS应用程序的注入与hook实例

3.  进阶篇
这里从调试内核,编译内核开始介绍一些研究内核或底层相关的主题,相信掌握方法后,便能自己进行深入研究,经过一定时间的磨练,便能成为高手了。
3.1  如何进行iOS内核调试(http://bbs.pediy.com/showthread.php?t=157624
  为了进行更深入的研究,我们先学会调试iOS内核。
3.2  在mac上编译xnu for mac内核
   我们学习研究Linux内核时是从编译Linux内核开始的,是由于iOS内核和Mac上的os x内核具有很大的相似性(都是采用XNU的内核),为了进一步调试分析研究iOS,我们从可以从编译XNU内核开始。编译好后我们可以通过对比Mac os x的内核来学习iOS内核。
3.3  limera1n漏洞原理分析
3.4  绿毒代码分析之cyanide代码分析
3.5  绿毒代码分析之syringe代码分析
3.6  如何调用aes gid引擎获取iOS固件的解密key

4.  高级篇
这里介绍一些高级主题,如已知公开的漏洞分析,越狱的实现的原理;iOS内核分析如系统调用、中断处理、内存管理等功能。
4.1  JailBreakMe3.0漏洞(用户态)分析
4.2  JailBreakMe3.0漏洞(内核态)分析
4.3  iOS系统从用户态进入内核态及返回(系统调用)的分析
4.4  iOS如何利用ARM的MMU进行地址映射
4.5  如何在内核态运行自定义代码(如hook)——data代码分析
4.6  如何在内核态运行自定义代码(如hook)——white代码分析


最后
感谢kanxue,cd-team及各位朋友!

下面是附件
ARM® Architecture Reference Manual Extracts Including instruction set descriptions.7z
Objective-C.for.iPhone.Developers.A.Beginner's.Guide(McGraw-Hill.2010-5).pdf.7z
iphone4原理图.pdf
Programming.iOS.4.Matt.Neuburg.part1.rar
Programming.iOS.4.Matt.Neuburg.part2.rar
Programming.iOS.4.Matt.Neuburg.part3.rar
Programming.iOS.4.Matt.Neuburg.part4.rar
上传的附件:
最新回复 (94)
5
zhuliang 2013-1-5 14:43
2
还有些附件没上传,晚些时候再上传。
万俟飘然 2013-1-5 14:51
3
支持 支持~
40
riusksk 2013-1-5 14:52
4
支持zhuliang,挺不错的入门教程,期待后续的文章,排版就是有点密集了
snnn 2013-1-5 14:57
5
好文!  推荐!
欲哭无泪 2013-1-5 14:59
6
前排支持阿。。。。
1
曹无咎 2013-1-5 15:08
7
不错,顶一下zhuliang
5
zhuliang 2013-1-5 15:15
8
谢谢泉哥。我没搞明白如何搞排版就不密了。
是用哪个标签呢?
9
熊猫正正 2013-1-5 15:24
9
支持,支持~~
LiXMX 2013-1-5 15:56
10
虽然不懂嵌入式,但是下回去看看。。。学习一下
40
riusksk 2013-1-5 16:10
11
用记事本复制粘贴就不密集了,然后在编辑时稍微加粗之类的处理就可以了,呵呵
40
riusksk 2013-1-5 16:32
12
深入android,玩的就是linux内核;
深入ios,玩的就是BSD内核。
2
accessd 2013-1-5 16:41
13
做的非常不错
5
zhuliang 2013-1-5 16:46
14
谢谢accessd,你是经验丰富的牛人,我要向你学习。
darkplayer 2013-1-5 16:58
15
顶!!!!!!!!!!!
huzhao 2013-1-5 18:00
16
非常好的IOS入门引导, 希望版主后续的精彩文章
swlilike 2013-1-5 18:01
17
字里行间的学习  学习了~
zhangcr 2013-1-5 20:35
18
资料是不错,可惜俺的英文不好。先收藏呢
10
loongzyd 2013-1-5 21:44
19
表示来晚了,顶一个!
jecray 2013-1-5 21:55
20
期待中~~~~
kxzjchen 2013-1-5 23:15
21
敢问,斑竹你的头像怎么是个女女?难不成真是女女?
bluegb 2013-1-6 00:13
22
默默等待...................
linhanshi 2013-1-6 01:43
23
Thanks for share.
Fido 2013-1-6 09:36
24
支持....谢谢分享....
Artmiss 2013-1-6 09:38
25
好帖留名,方便回看~
2
coltor 2013-1-6 10:14
26
thanks for share  了~...
huntime 2013-1-6 10:17
27
突然有方向了
诶一 2013-1-6 10:28
28
顶一下 很牛逼 。

   弱弱的问一下, 买A4的CPU就是iphone4了,那编写出来的程序在A5的CPU上运行的效果一样么?
A4 和 A5的差异是在于调试内核的时候不行么? 还有其他的差异么?
1
冰川 2013-1-6 10:36
29
好文!  推荐!
5
zhuliang 2013-1-6 12:54
30
说的是A4或A4以前的cpu,A5不行,是因为没有bootrom漏洞。A4或A4以前的cpu有bootrom漏洞。
不一定是iPhone4,iPod touch4 、iPod touch3、iPhone 3gs等也行的。

对于研究而言,A4可以调试内核,A5的不行。A5性能要比A4好,但修补了Bootrom漏洞。
诶一 2013-1-6 13:00
31
thank you ! 谢谢版主指点。  
appview 2013-1-6 22:07
32
很好的学习指南,谢谢楼主分享,收藏了
ouyangtian 2013-1-7 08:57
33
顶!!对学习ios有很大的帮助,谢谢
MarcoZhong 2013-1-8 09:15
34
这个必须顶,继续关注后续精彩!
djxh 2013-1-9 01:10
35
好文,感谢楼主无私奉献。。。
happymhx 2013-1-9 08:13
36
支持,感谢分享
临冰结阵 2013-1-9 17:38
37
头像是IDA软件图标,女人名字也是IDA,具体的可以百科下
CoyLiu 2013-1-11 16:28
38
多谢楼主分享,学习了。
cnppk 2013-1-14 13:12
39
其中的iphone原理图怎么才能看懂呢?请版主赐教
5
zhuliang 2013-1-15 09:45
40
要看懂原理图是要一定的基础的,如果不研究底层,只是研究高层,可以不用看懂它的。

知道程序运行机理,懂得用各种手段分析,最终实现自己的目的就行。
cnppk 2013-1-15 10:23
41
版主说的基础就是电子电路,电工之类的?
5
zhuliang 2013-1-15 11:36
42
电子电路方面的。有这方面基础固然是好没有也能进行研究。
南宫世家 2013-1-26 08:48
43
经典,一语中的。。
shangrila 2013-2-7 00:00
44
先支持个,再看~~~
shangrila 2013-2-11 01:01
45
期待大作~~~~
hulichu 2013-2-19 11:03
46
ARM® Architecture Reference Manual Extracts Including instruction set descriptions.pdf   文件不能打开
jecray 2013-2-22 19:02
47
谢谢提供宝贵的资料
caozhzh 2013-2-22 21:44
48
很不错的提纲,占个座经常来学习了
baiyunbian 2013-2-26 11:57
49
IOS对我就象个黑匣子,楼主的指导象那及时雨!
coocoody 2013-3-7 00:20
50
去准备硬件IPOD额...
返回



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