美文网首页ios逆向与安全
iOS逆向与安全(七):应用的构建过程

iOS逆向与安全(七):应用的构建过程

作者: 繁华落尽丶lee | 来源:发表于2018-09-22 11:31 被阅读38次

前言

本节学习应用的构建过程,在工作和学习中构建过很多应用,很少去研究应用究竟是怎么从一行行代码变成安装包的。

构建步骤

App从代码到安装包.ipa经历的过程如下:
①. compile: 使用Clang编译源文件,生成目标文件。
②. link: 将编译生成的目标文件链接成一个可执行文件
③. storyboard: 编译项目中storyboard
④. plist: 生成plist文件,里面会指定应用的名字、BundleID等。
⑤. asset: 复制资源文件到APP目录下
⑥. dsym: 生成符号文件
⑦. codesign: 对APP进行签名。这个后面会单独学习签名和重签名。
⑧. package:打包,生成App文件夹放到payload文件夹下,并压缩成.ipa文件。

示例

使用Xcode创建一个项目,执行command + B命令。查看构建Log如下图:

我们接下来看看,构建过程都做了什么工作?

从上到下顺序分析,create product structure猜测是创建应用结构。点击后面的显示详情按键。

这里使用mkdir -p xxx命令,意思是在指定目录下创建xxx文件夹,这里创建xxx.app文件夹,不是文件。

接着下面可是编译ViewController.mmain.mAppDelegate.m。这里编译的文件是Build Phases --> Compile Source中添加的文件。如果某个文件不需要编译,可以在该目录下移除。

查看编译Log详情,使用clang编译源文件。直接通过clang目录运行,也可以使用xcrun自动找到Clang的位置。-fobjc-arc参数指定有ARC编译。-fmodules参数会自动找到需要的系统库。还有很多参数,这里就不一一列举。

接下来是Link xxx将编译生成的目标文件链接成一个可执行文件。

之后编译storyboard,生成info.plist以及将asset目录复制到项目中。

生成dSYM符号文件,这个需要在release模式下。使用dsymutil命令。使用dwarfdump --uuid可以查DSYM或者可执行文件的UUID。

之后是对应应用进行签名,需要embedded.mobileprovisionentitlements.plist内容在Process product packaging详情中找到。

最后是打包操作,将生成的app文件夹放到Payload文件夹下,通过zip压缩成ipa文件。

以上就是应用的构建过程。

小结

本节整体学习应用的构建过程,还涉及到很多命令和参数,以后遇到在慢慢补充。

相关文章

网友评论

    本文标题:iOS逆向与安全(七):应用的构建过程

    本文链接:https://www.haomeiwen.com/subject/alitoftx.html