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

3.1 了解iPhone

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如何实现一些功能的时候很有帮助。)

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

  1. 《黑客大曝光:移动应用安全揭秘及防护措施》一2.2 攻击与对策

    本节书摘来自华章出版社<黑客大曝光:移动应用安全揭秘及防护措施>一书中的第2章,第2.2节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区"华章计算机&qu ...

  2. 《黑客大曝光:移动应用安全揭秘及防护措施》一2.1 基础移动网络功能

    本节书摘来自华章出版社<黑客大曝光:移动应用安全揭秘及防护措施>一书中的第2章,第2.1节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区"华章计算机&qu ...

  3. 《黑客大曝光:移动应用安全揭秘及防护措施》一3.3 越狱:发泄愤怒

    本节书摘来自华章出版社<黑客大曝光:移动应用安全揭秘及防护措施>一书中的第3章,第3.3节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区"华章计算机&qu ...

  4. 《黑客大曝光:移动应用安全揭秘及防护措施》一3.4 入侵别人的iPhone:再次释放心中的怒火...

    本节书摘来自华章出版社<黑客大曝光:移动应用安全揭秘及防护措施>一书中的第3章,第3.4节,作者 (美)Neil Bergman ,更多章节内容可以访问云栖社区"华章计算机&qu ...

  5. 黑客大曝光:恶意软件和Rootkit安全

    <黑客大曝光:恶意软件和Rootkit安全> 推荐序 在我从事信息安全工作的将近15年中,恶意软件(malware)已经成为网络攻击者武器库中最有力的工具.从窥探财务记录和窃取击键到对等( ...

  6. J2EE Java黑客大曝光:开发安全的Java应用程序

    J2EE Java黑客大曝光:开发安全的Java应用程序 本书首先从Java及J2EE体系结构和基本安全机制入手,阐述Java认证和授权服务.Java密码系统扩展和Java安全套接字扩展等安全包,书中 ...

  7. 读书笔记——《黑客大曝光》(1/8)

    第一部分 收集情报 案例研究 Tor系统基于洋葱路由器,是第二代低延迟匿名系统,用户可通过它在互联网上进行匿名通信.Tor网络的使用者必须在他们的系统上运行一个洋葱代理,这个代理允许它们在Tor网络上 ...

  8. 读书笔记——《黑客大曝光》(6/8)

    第11章 攻击移动设备 11.1 攻击Android 1.开放手机联盟OHA主要负责Andriod的开发.Android系统被定位为"第一个完全的.开放的和免费的移动平台". 2. ...

  9. 读书笔记——《黑客大曝光》(4/8)

    第5章 攻击Unix 5.1 获取root权限 在UNIX中只有两级访问权限:全权root和其他任何访问权. 5.1.1 简短回顾 使用rfcinfo和showmount可分别查点RPC服务和NFS安 ...

  10. linux黑客大曝光 pdf,UPPH、UPH

    Java在方法作用域内创建的内部类 在方法作用域内创建的内部类,用来实现一个接口 /** * Created by xfyou on 2016/11/3. * Java内部类演示 */ public ...

最新文章

  1. 命令行 sc delete 的使用(删除服务项)
  2. SpringIOC、DI、AOP、MVC总结、时序图
  3. linux chown命令格式,在Linux上如何使用chown命令 (文件所有权)
  4. 使用jQuery实现图片懒加载原理
  5. 每日Ubuntu小技巧:合上笔记本,系统不睡眠
  6. 部署到Maven中央存储库
  7. 添加phpiredis扩展的时候报错
  8. 计算机网络——数据帧和数据包的区别
  9. C语言手写自定义三维数组
  10. HTML5 header元素
  11. html页面性能优化两则
  12. Android插件库
  13. SparkStreaming读取本地文件进行wordCount
  14. python时间格式转换为美式日期_python中有关时间日期格式转换问题
  15. fastboot 常用命令
  16. redis 获取验证码
  17. 凡泰极客成为W3C成员并加入MiniApps工作组
  18. 推荐一个python库:Vaex
  19. 日语操作系统安装日语软件乱码的解放方案
  20. pointnet的部分参考文献 用markmap显示

热门文章

  1. 引用的基本概念与用法
  2. java Relative Path and absolute
  3. 高德地图在android上的开发汇总
  4. 最新unity3d中关键概念全解(坐标系,脚本的执行顺序等)
  5. 【带权并查集 —— 是否说谎】Parity game【POJ 1733】
  6. java csv api_CSVAPIforJava
  7. cad统计多线段总长度插件_新手入门,学习CAD必须掌握,教你使用标注命令,绘图效率翻一倍...
  8. 注解 @EnableFeignClients 与 @ComponentScan 有冲突
  9. 2014年5月第二个周末总结--保守自己的心
  10. docker-简单操作