【Linux】ELF、BIN、PBP、MAP文件查看
- 1. 查看ELF文件内容
- ① 查看ELF头部信息
- ② 查看段(Sections)和节(Segments)
- ③ 反汇编代码段
- ④ 查看符号表
- 2. 查看BIN文件内容
- ① 十六进制查看
- ② 反汇编(需指定架构和基地址)
- 3. 查看PBP文件内容
- ① 解包PBP文件
- ② 查看嵌入的ELF
- 4. 查看MAP文件内容
- ① 直接查看
- ② 关键信息提取
- 5. 其他工具补充
- 总结表
在Linux中,不同编译生成的文件(如ELF、BIN、PBP、MAP)需要使用不同的工具查看其内容。以下是具体方法和工具:
1. 查看ELF文件内容
ELF文件包含可执行代码、符号表、调试信息等,可通过以下工具分析:
① 查看ELF头部信息
readelf -h <filename.elf> # 显示ELF文件头(架构、入口地址等)
输出示例:
ELF Header:Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 Class: ELF32Data: 2's complement, little endianEntry point address: 0x8048300...
② 查看段(Sections)和节(Segments)
readelf -S <filename.elf> # 列出所有节(如.text, .data)
readelf -l <filename.elf> # 查看程序头(加载到内存的段)
③ 反汇编代码段
objdump -d <filename.elf> # 反汇编.text段
objdump -s -j .rodata <filename.elf> # 查看只读数据段
④ 查看符号表
nm <filename.elf> # 显示符号(函数/变量地址)
readelf -s <filename.elf> # 更详细的符号表
2. 查看BIN文件内容
BIN文件是纯二进制数据,需用工具解析为十六进制或反汇编:
① 十六进制查看
hexdump -C <filename.bin> # 经典十六进制+ASCII显示
xxd <filename.bin> # 类似hexdump的可视化
② 反汇编(需指定架构和基地址)
objdump -b binary -m arm -D <filename.bin> --adjust-vma=0x8000
• -m arm
:指定目标架构(如x86、ARM)。
• --adjust-vma=0x8000
:设置加载地址(需根据实际硬件确定)。
3. 查看PBP文件内容
PBP是PSP的自定义格式,需解包后分析:
① 解包PBP文件
psp-unpack <filename.pbp> # 解包后得到PARAM.SFO、ICON0.PNG、DATA.PSP等
② 查看嵌入的ELF
解包后的DATA.PSP
通常是ELF文件,用readelf
或objdump
分析:
readelf -h DATA.PSP
objdump -d DATA.PSP
4. 查看MAP文件内容
MAP文件是文本文件,直接使用文本工具查看:
① 直接查看
cat <filename.map> # 显示全部内容
less <filename.map> # 分页查看(支持搜索)
② 关键信息提取
• 内存布局:搜索Memory Configuration
或Linker script and memory map
。
• 符号地址:搜索函数/变量名(如main
)。
• 段大小:查找.text
、.data
等段的大小。
示例输出:
.text 0x8000 0x2000
main 0x8000 0x100
.data 0xA000 0x500
5. 其他工具补充
• GDB调试ELF:动态分析程序行为。
gdb <filename.elf>
• strings提取字符串:从任意文件中提取可读字符串。
strings <filename.elf> | grep "keyword"
总结表
文件类型 | 查看工具 | 常用命令示例 |
---|---|---|
ELF | readelf , objdump , nm | readelf -h file.elf |
BIN | hexdump , objdump | hexdump -C file.bin |
PBP | psp-unpack , readelf | psp-unpack file.pbp |
MAP | cat , less , grep | less file.map |
在Linux中,可以使用输出重定向(>
或 >>
)将命令的结果保存到 test.txt
文件。以下是针对不同文件类型的示例:
文件类型 | 命令示例(输出到 test.txt ) |
---|---|
ELF | readelf -h file.elf > test.txt |
BIN | hexdump -C file.bin > test.txt |
PBP | psp-unpack file.pbp > test.txt |
MAP | cat file.map > test.txt |