Mach-O文件

Mach-O文件

Mach-O基本结构

1
2
3
4
5
6
Header
- 文件类型,目标架构等
Load Commands
- 描述文件在虚拟内存中的逻辑结构、布局
Raw segment data
- 在Load commands中定义的Segment的原始数据

查看Mach-O信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
MACH_PATH=${BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/${PRODUCT_NAME}

# 查看Mach-O Header信息
objdump --macho -private-header ${MACH_PATH}

# 查看Mach-O Text信息
objdump --macho -d ${MACH_PATH}

# 查看符号表
objdump --macho --syms ${MACH_PATH}
# 查看导出符号
objdump --macho --exports-trie ${MACH_PATH}
# 查看间接符号表
objdump --macho --indirect-symbols ${MACH_PATH}

# 使用nm命令查看符号表
nm -m ${MACH_PATH}

验证可执行文件是否被加壳

  • 使用MachOView 查看Load Commands 中LC——ENCRYPTING_INFO 中 Crypt_ID 是否为0 // 0未加密

  • otool -l Test | grep Crypt // cryptid 为0 则未加密