IOS Mach-o 文件的解析

导论

  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 文件的解析)