IOS Mach-o 文件的解析

作者: ProfessorFan | 来源:发表于2020-12-12 14:57 被阅读0次

    导论

    1. Mach-o 文件图解
    2. Mach-o 文件中专有名词解释
    3. Mach-o 文件中函数存储地址
    4. Mach-o 文件中常量存储地址
    5. Mach-o 文件加载在手机中的实际展示地址
    6. ASLR理解
    7. 命令查看Mach-O 文件的内存分布
    8. 查看ASLR(地址布局随机值)

    正文

    1. Mach-o 文件图解

    1. Mach-o 文件结构图


      Mach-o文件结构图.png
    2. 通过MachOView打开Mach-O 文件如下图所示


      案例Mach-o文件图.jpeg

    2. Mach-o 文件中专有名词解释

    PAGEZERO解释.jpeg
    1. VM Address
      解释: 在没有ALSR条件下,加载到手机内存中的地址
    2. VM Size
      解释: 在没有ALSR条件下,该模块加载到内存中的大小
    3. File Offset
      解释: 相对于Mach-o 文件的位置
    4. FIle Size
      解释:在没有ALSR条件下,该文件的大小

    3. Mach-o 文件中函数存储地址

    函数代码存放在 _TEXT段中

    4. Mach-o 文件中常量存储地址

    全局变量存储在 _DATA段中

    5. Mach-o 文件加载在手机中的实际展示地址

    VMAddress: 0x100000000
    ASLR随机产生的Offset(偏移):0x5000,也就是可执行文件的内存地址


    ASLR存储图解.png

    6. ASLR理解

    ASLR是一种针对缓冲区溢出的安全保护技术,通过对堆,栈,共享库映射等线性区布局的随机化,通过增加攻击者预测目的地址的难度,防止攻击者直接定位代码位置,达到组织溢出攻击的目的的一种技术.用白话说就是:ASLR(Address Space Layout Randomization),即地址空间随机布局.ASLR 特性是为了防御攻击对已经地址的攻击才加入的,程序在运行时加载的地址都是随机的,正因如此,所以我们在调试程序的时候,给某一个函数下断点的时候,用用程序文件偏移地址加上加载到内存的随机地址.

    7. 命令查看Mach-O 文件的内存分布

    查看应用程序 Mach-O文件的内存分布

    size -l -m -x  mach-o文件名
    

    案例LLDB测试结果如下:


    mach-o文件的内存分布.jpeg

    8. 查看ASLR(地址布局随机值)

    1. 越狱链接手机
    2. 查看ASLR(地址布局随机值)
    image list -o -f
    

    下图显示了此刻启动拼多多的ASLR(地址布局随机化)的值为:0x5C000


    ASLR案例.jpeg

    参考文献

    1. lldb连接debugserver报错failed to get reply to handshake packet

    相关文章

      网友评论

        本文标题:IOS Mach-o 文件的解析

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