应用的构建过程与签名
一、引言
在逆向开发的过程中,一些常用逆向工具和逆向分析的技巧已经被我们所熟知和运用,但其中所用到的理论基础往往容易被忽略。理论基础的储备能够拓宽逆向分析的思路,并在遇到问题时很快的找到原因和应对的方法,从而使得逆向开发的过程变得轻松。下面从基础的包结构、包构建以及包安装进行解读。
二、应用包的格式
苹果的应用包主要是ipa格式的,其本身就是zip的压缩包,右键“归档实用工具”即可解压包内的内容,拿讯飞输入法举例,它的应用包内容结构如下:
AestheticdeMBP:应用 aesthetic$ tree 讯飞输入法-8.0.2336 -L 2
讯?\236?\223?\205??\225-8.0.2336
├── META-INF
│ ├── com.apple.FixedZipMetadata.bin
│ └── com.apple.ZipMetadata.plist
├── Payload
│ └── iFlytekIME.app
├── iTunesArtwork
└── iTunesMetadata.plist
其中Payload目录下就是iFlytekIME.app文件夹,为应用包的主要成分,它的目录下主要有如下几类文件:
-
可执行文件: 它是应用的在iOS系统中的执行文件,是定义的MachO格式类型,就像ELF是Linux的可执行文件类型一样,它最终由dyld进行加载运行。
逆向层面:运用Hopper可用于进行静态代码的分析,修改Load Commands段以加载注入的动态库,运用懒加载符号绑定的特性进行函数的Hook等</