iOS安全入门

各位亲 有时间可以去看看我的  “金骏家居淘宝店” http://jinjun1688.taobao.com/shop/view_shop.htm?tracelog=twddp 买时说明在我的博客看到有优惠哦 还有意外礼品赠送  真正的程序员淘宝店

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代码分析

你可能感兴趣的:(IOS)