美文网首页
iOS Mach-o文件学习

iOS Mach-o文件学习

作者: fordG | 来源:发表于2019-04-02 10:06 被阅读0次

    Mach Object mac和ios系统可执行文件的格式

    分类
    • Executable应用程序的可执行文件


      image.png
      image.png
      image.png
    image.png

    通过解压ipa包获取了一个和应用同名的二进制文件通过machoview查看获取到的Fat Binary类型为MH_Exectute有两种格式,一种arm_v7真机32位 arm64_all真机64位, executable文件分成三部分 header loadCommand Data


    image.png

    Header文件参数含义

    • Magic Number: 魔数 设备cpu位数
    • cputype: cpusubtype cpu类型自类型
    • filetype: Mach-o文件类型
    • number of load commands 缩写ncmds 加载器加载的命令数量
    • Size of load commands 所有加载的命令的大小
    • Flags 动态链接器的标志(字段表示文件标志,它是一个含有一组位标志的整数,指明了Mach-O文件的一些标志信息)具体参考这里
    image.png

    Load Command(加载指令,告诉加载器如何处理二进制数据,处理对方分别为内核,动态链接器等。加载指令紧跟在Header后的加载命令区。Load Commands 加载指令个数及大小在Header中定义( commands 的大小总和即为 Header->sizeofcmds 字段,共有 Header->ncmds 条加载命令)

    作者:龙猫六六
    链接:https://www.jianshu.com/p/8f3d3f6b6af8
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。) segment command(段加载命令,需要加载到对应的进程控件) 参数含义

    • cmd: 指令类型
    • cmdsize: 之类加载的大小
    • segname image.png
    • vm address: 段的虚拟内存地址起始位置
    • vm size: 段的虚拟内存大小
    • file offset 段在文件中的偏移量
    • file size 段在文件中的大小
    • maximun vm protection: 段页面所需要的最高内存保护
    • initial vm protection: 段初始化的内存保护
    • number of sections: 段中包含的section的数量

    段数据加载并映射到内存过程:从fileo ff处加载file size大小到虚拟内存vmaddr处,并占用虚拟内存大小为vmsize,一般情况下段名_TEXT,_DATA的file size=vmsize;段名_LINKDIT的file size<vmsize(动态链接申请的内存控件要大于文件大小)

    image.png

    iOS堆栈信息解析(Mach-O)
    mach-o
    mach-o文件结构

    相关文章

      网友评论

          本文标题:iOS Mach-o文件学习

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