mach-o 文件学习
file + 文件名: 查看一个可执行文件的文件格式
lipo -info + 文件名:查看可执行文件的架构
mach-o文件结构
header 头
load_commands 加载命令区
data 数据区
otool -h + 文件名 查看header信息
EasyDemo (architecture armv7):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedface 12 9 0x00 2 24 2548 0x00200085
EasyDemo (architecture arm64):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
0xfeedfacf 16777228 0 0x00 2 24 2976 0x00200085
otool -hv + 文件名 查看header信息 (附带详细信息)
EasyDemo (architecture armv7):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 24 2548 NOUNDEFS DYLDLINK TWOLEVEL PIE
EasyDemo (architecture arm64):
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 24 2976 NOUNDEFS DYLDLINK TWOLEVEL PIE
magic 魔
0xfeedface 32 位 MH_MAGIC
0xfeedfacf 64 位 MH_MAGIC_64
cpu的平台和版本
cputype ARM
cpusubtype V7
文件类型
filetype 2 EXECUTE 可执行文件
otool -s __TEXT __text EasyDemo 查看节的信息
otool -tv EasyDemo | head -n 10 查看前10 行 的反编译结果