天天看点

《黑客大曝光:移动应用安全揭秘及防护措施》一3.1 了解iPhone

本节书摘来自华章出版社《黑客大曝光:移动应用安全揭秘及防护措施》一书中的第3章,第3.1节,作者 (美)neil bergman ,更多章节内容可以访问云栖社区“华章计算机”公众号查看

ios有一段很有趣的历史,这有助于在学习入侵ios平台时增进对ios的了解。20世纪80年代中期,史蒂夫•乔布斯离开了苹果,创立了next,在这里,他开发了ios的雏形。next开发了一系列旨在用于教育和其他非消费市场的高端工作站。next选择开发自己的操作系统,并在最初命名为nextstep。nextstep的开发基本上是对一些开源软件进行内部开发优化,再组合在一起。nextstep最基础的系统主要是衍生于卡内基•梅隆大学mach内核,并借鉴了一些bsd unix内核。next对于此平台的编程语言做了一个有趣的决定:选择采用objective-c这一编程语言,并以此语言为他们的平台提供绝大多数接口。这是对传统的突破,因为当时在其他平台上的应用开发编程语言中,c语言占据着主导的地位。nextstep系统上的应用由objective-c语言开发,结合了next提供的扩展类库。

1996年,苹果公司收购了next公司,以及其开发的nextstep系统(同时,将其重新命名为openstep系统)。nextstep系统被选择作为代替老式的经典mac os的下一代操作系统的基础。新平台的预先发行版本的代号为rhapsody,这个平台中的接口被进行了修改以符合mac os 9的风格。这种风格样式最终被替换为mac os x(代号为aqua)的界面风格。随着界面的改变,操作系统和附带应用的开发工作还在继续,到2001年5月24日,苹果公司公开向全世界发布了他们的下一代操作系统—mac os x。

6年后,在2007年,苹果公司带着iphone大举进入移动手机市场。iphone是一款令人兴奋的新型智能手机,拥有许多新颖的功能,包括手机本身先进的工业设计以及一个最初叫做iphone os新型的移动手机操作系统。iphone os之后被颇有争议地改为ios(因为它与思科公司的互联网操作系统internetwork operating system即ios很相似),它从nextstep和mac os x家族衍生,或多或少是mac os x的一个精简分支。ios的内核仍然采用基于mach和bsd的一个类似的编程模型,应用开发模型也仍然基于objective-c语言,并高度依赖苹果公司提供的类库。

随着iphone的发布,一些其他的基于ios的设备也陆续由苹果公司发布,包括ipod touch 1g(2007)、apple tv(2007)、ipad(2010)以及ipad mini(2012)。ipod touch 和ipad在软硬件方面都与iphone非常相似。apple tv与其他产品有一点不同,因为它主要是针对家庭用户的一个嵌入式设备,而不是一个移动设备。不管怎样,apple tv始终还是基于ios系统,实现的功能大体上也相同(最值得一提的不同点就是用户界面,以及缺乏官方对于应用的安装和运行的支持)。

从安全的角度来看,上面所述的是一些有关ios设备攻击或安全保护重点的提示。那么注意力必然要转移到对操作系统架构的学习,包括怎么编写mach内核,以及应用程序编程模型的指导,特别是怎样一起工作、分析、设计,以及修改主要基于objective-c语言和苹果提供的框架的程序。

最后需要注意的有关ios设备的一点是苹果公司所选择的硬件平台。迄今为止,所有基于ios的设备的核心都是一个arm处理器,这种处理器与x86或一些其他类型的处理器是对立的。arm处理器结构与其他类型的处理器之间有很大不同,因此当在ios平台上进行工作时必须对这些不同点了解清楚。最明显的就是在开发时,所有指令、寄存器、值等等都与其他平台上的不同。在某种程度上,arm处理器的使用更为简便。例如,所有arm指令的长度都是固定的(2比特或者4比特);指令集包含的指令数较其他平台而言更少;暂时不需要担心64位的扩展,因为现在的iphone和其他类似的产品所使用的arm处理器都只是32位。

 为了简便起见,在本章将使用iphone来代表所有基于ios的设备。同时,当需要区别的时候,我们也会分别使用iphone和ios来描述。

在讨论ios安全之前,如果你有兴趣学习更多有关ios内部结构或arm结构的知识,这里有一些参考文献可供进一步的阅读:

mac os x internal: a systems approach, amit singh (addison-wesley, 2006)

mac os x and ios internals: to the apple抯 core, jonathan levin (wrox, 2012)

os x and ios kernel programming, ole henry halvorsen (apress, 2011)

ios hacker抯 handbook, charlie miller et al. (wiley, 2012)

the mac hacher抯 handbook, charlie miller et al. (wiley, 2009)

programming under mach, joseph boykin et al. (addison-wesley, 1993)

arm system developer抯 guide: designing and optimizing system software, andrew sloss et al. (morgan kaufmann, 2004)

arm reference manuals, infocenter.arm.com/help/topic/com.arm.doc.subset. architecture. reference/index.html#reference

the base operating sytem source code for mac os x,opensource.apple.com(这些代码中的一部分是与ios共享使用的,所以在试图确定ios如何实现一些功能的时候很有帮助。)

继续阅读