导论
- Mach-o 文件图解
- Mach-o 文件中专有名词解释
- Mach-o 文件中函数存储地址
- Mach-o 文件中常量存储地址
- Mach-o 文件加载在手机中的实际展示地址
- ASLR理解
- 命令查看Mach-O 文件的内存分布
- 查看ASLR(地址布局随机值)
正文
1. Mach-o 文件图解
-
Mach-o 文件结构图
Mach-o文件结构图.png -
通过MachOView打开Mach-O 文件如下图所示
案例Mach-o文件图.jpeg
2. Mach-o 文件中专有名词解释
PAGEZERO解释.jpeg- VM Address
解释: 在没有ALSR条件下,加载到手机内存中的地址 - VM Size
解释: 在没有ALSR条件下,该模块加载到内存中的大小 - File Offset
解释: 相对于Mach-o 文件的位置 - 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(地址布局随机值)
- 越狱链接手机
- 查看ASLR(地址布局随机值)
image list -o -f
下图显示了此刻启动拼多多的ASLR(地址布局随机化)的值为:0x5C000
ASLR案例.jpeg
网友评论