首页
社区
课程
招聘
[原创]iOS安全入门
2013-1-5 14:43 152081

[原创]iOS安全入门

2013-1-5 14:43
152081
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

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

上传的附件:
收藏
点赞4
打赏
分享
最新回复 (105)
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
zhuliang 5 2013-1-5 14:43
2
0
还有些附件没上传,晚些时候再上传。
雪    币: 305
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
万俟飘然 2013-1-5 14:51
3
0
支持 支持~
雪    币: 431
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2013-1-5 14:52
4
0
支持zhuliang,挺不错的入门教程,期待后续的文章,排版就是有点密集了
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
snnn 2013-1-5 14:57
5
0
好文!  推荐!
雪    币: 151
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
欲哭无泪 2013-1-5 14:59
6
0
前排支持阿。。。。
雪    币: 146
活跃值: (1215)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
曹无咎 1 2013-1-5 15:08
7
0
不错,顶一下zhuliang
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
zhuliang 5 2013-1-5 15:15
8
0
谢谢泉哥。我没搞明白如何搞排版就不密了。
是用哪个标签呢?
雪    币: 2321
活跃值: (4028)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
熊猫正正 9 2013-1-5 15:24
9
0
支持,支持~~
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
LiXMX 2013-1-5 15:56
10
0
虽然不懂嵌入式,但是下回去看看。。。学习一下
雪    币: 431
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2013-1-5 16:10
11
0
用记事本复制粘贴就不密集了,然后在编辑时稍微加粗之类的处理就可以了,呵呵
雪    币: 431
活跃值: (1875)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
riusksk 41 2013-1-5 16:32
12
0
深入android,玩的就是linux内核;
深入ios,玩的就是BSD内核。
雪    币: 1115
活跃值: (122)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
accessd 2 2013-1-5 16:41
13
0
做的非常不错
雪    币: 1098
活跃值: (193)
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
zhuliang 5 2013-1-5 16:46
14
0
谢谢accessd,你是经验丰富的牛人,我要向你学习。
雪    币: 284
活跃值: (34)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
darkplayer 2013-1-5 16:58
15
0
顶!!!!!!!!!!!
雪    币: 388
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
huzhao 2013-1-5 18:00
16
0
非常好的IOS入门引导, 希望版主后续的精彩文章
雪    币: 89
活跃值: (53)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
swlilike 2013-1-5 18:01
17
0
字里行间的学习  学习了~
雪    币: 29
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangcr 2013-1-5 20:35
18
0
资料是不错,可惜俺的英文不好。先收藏呢
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
loongzyd 10 2013-1-5 21:44
19
0
表示来晚了,顶一个!
雪    币: 27
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jecray 2013-1-5 21:55
20
0
期待中~~~~
雪    币: 190
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
kxzjchen 2013-1-5 23:15
21
0
敢问,斑竹你的头像怎么是个女女?难不成真是女女?
雪    币: 63
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
bluegb 2013-1-6 00:13
22
0
默默等待...................
雪    币: 85463
活跃值: (198795)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 2013-1-6 01:43
23
0
Thanks for share.
雪    币: 107
活跃值: (311)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Fido 2013-1-6 09:36
24
0
支持....谢谢分享....
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Artmiss 2013-1-6 09:38
25
0
好帖留名,方便回看~
游客
登录 | 注册 方可回帖
返回