iOS应用安全学习——文件结构

iOS应用安全学习—文件结构

此章节主要梳理了iOS的重要文件路径和Math-O文件格式相关知识点

iOS系统目录

UNIX传统目录

  • /bin

  • /boot

  • /dev

  • /etc —— 符号链接,指向/private/etc

  • /lib —— iOS中为空

  • /mnt —— iOS中为空

  • /sbin

  • /tmp —— 符号链接,指向/private/var/tmp

  • /usr

  • /var

iOS特有目录

  • /Application —— 此路径是越狱商店安装APP的路径,从APP Store下载的程序安装在/var/mobile/Containers/Bundle/Application
  • /Developer
  • /Library
  • /System —— 是系统中最重要的目录
  • /User

iOS沙盒结构

沙盒(Sanbox)是把应用程序生成和修改的文件重定向到自身文件夹中。在沙盒机制下,每个程序之间的文件夹不能互相访问。iOS采用该机制。

iOS应用程序在安装时会创建属于自己的沙盒文件,沙盒根目录下有三个文件夹。分别为

  • Document —— 存放应用程序的数据
  • Library
    • Preferences
    • Caches
  • tmp

iOS应用结构

  • Payload —— 存放.app文件夹,是真正的包内容

  • XXX.app

    • Info.plist

      • Bundle identifier
      • Executable file —— 该参数所对应的可执行文件就是目标文件,也就是逆向工程所针对的
    • *.lproj —— 存放本地化的字符串(.strings),是逆向工程寻找切入点的途径之一

    • 资源文件

    • Frameworks —— 当前应用中使用的一些第三方框架或Swift动态库

    • PlugIns —— 当前应用的扩展文件

    • Watch —— 如果当前应用支持Apple Watch,则会有此文件夹及对应的应用


Mach-O 文件格式

// TODO