发布时间:2026/6/20 13:59:12
目标文件/可执行文件查看-C/C++
文章目录linux系统目标文件查看文件头段表内容段其他段符号表可执行文件查看程序头表程序虚拟地址空间分布手动生成目标文件Windowslinux系统# 查看文件格式$filesimpleSection.o simpleSection.o: ELF64-bit LSB relocatable, x86-64, version1(SYSV), not stripped目标文件查看文件头$ readelf-hsimpleSection.o ELF Header: Magic: 7f454c4602 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data:2s complement, little endian Version:1(current)OS/ABI: UNIX - System V ABI Version:0Type: REL(Relocatablefile)Machine: Advanced Micro Devices X86-64 Version: 0x1 Entry point address: 0x0 Start of program headers:0(bytes intofile)Start of section headers:1032(bytes intofile)Flags: 0x0 Size of this header:64(bytes)Size of program headers:0(bytes)Number of program headers:0Size of section headers:64(bytes)Number of section headers:14Section header string table index:13段表$ readelf-SsimpleSection.o There are14section headers, starting at offset 0x408: Section Headers:[Nr]Name Type Address Offset Size EntSize Flags Link Info Align[0]NULL 0000000000000000 00000000 0000000000000000 0000000000000000000[1].text PROGBITS 0000000000000000 00000040 000000000000005a 0000000000000000 AX001[2].rela.text RELA 0000000000000000 000002e8 0000000000000078 0000000000000018 I1118[3].data PROGBITS 0000000000000000 0000009c 0000000000000008 0000000000000000 WA004[4].bss NOBITS 0000000000000000 000000a4 0000000000000008 0000000000000000 WA004[5].rodata PROGBITS 0000000000000000 000000a4 0000000000000004 0000000000000000 A001[6].comment PROGBITS 0000000000000000 000000a8 000000000000001c 0000000000000001 MS001[7].note.GNU-stack PROGBITS 0000000000000000 000000c4 0000000000000000 0000000000000000001[8].note.gnu.pr[...]NOTE 0000000000000000 000000c8 0000000000000030 0000000000000000 A008[9].eh_frame PROGBITS 0000000000000000 000000f8 0000000000000058 0000000000000000 A008[10].rela.eh_frame RELA 0000000000000000 00000360 0000000000000030 0000000000000018 I1198[11].symtab SYMTAB 0000000000000000 00000150 0000000000000138 00000000000000181288[12].strtab STRTAB 0000000000000000 00000288 000000000000005f 0000000000000000001[13].shstrtab STRTAB 0000000000000000 00000390 0000000000000074 0000000000000000001Key to Flags: W(write), A(alloc), X(execute), M(merge), S(strings), I(info), L(link order), O(extra OS processing required), G(group), T(TLS), C(compressed), x(unknown), o(OS specific), E(exclude), D(mbind), l(large), p(processor specific)# 关键的段$ objdump-hsimpleSection.o simpleSection.o:fileformatelf64-x86-64 Sections: Idx Name Size VMA LMA File off Algn0.text 0000005a 0000000000000000 0000000000000000 000000402**0 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE1.data 00000008 0000000000000000 0000000000000000 0000009c2**2 CONTENTS, ALLOC, LOAD, DATA2.bss 00000008 0000000000000000 0000000000000000 000000a42**2 ALLOC3.rodata 00000004 0000000000000000 0000000000000000 000000a42**0 CONTENTS, ALLOC, LOAD, READONLY, DATA4.comment 0000001c 0000000000000000 0000000000000000 000000a82**0 CONTENTS, READONLY5.note.GNU-stack 00000000 0000000000000000 0000000000000000 000000c42**0 CONTENTS, READONLY6.note.gnu.property 00000030 0000000000000000 0000000000000000 000000c82**3 CONTENTS, ALLOC, LOAD, READONLY, DATA7.eh_frame 00000058 0000000000000000 0000000000000000 000000f82**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA# ELF文件中代码段、数据段和bss段的长度$ size simpleSection.o text data bss dec hex filename23088246f6 simpleSection.o内容段# -s 将所有段的内容以十六进制的形式的打印# -d 将所有包含指令的段反汇编$ objdump-s-dsimpleSection.o simpleSection.o:fileformatelf64-x86-64 Contents of section .text: 0000 554889e5 4883ec10 897dfc8b 45fc89c6 UH..H....}..E... 0010 488d0500 00000048 89c7b800 000000e8 H......H........0020 00000000 90c9c355 4889e548 83ec10c7.......UH..H....0030 45f80100 00008b15 00000000 8b050000 E............... 0040 000001c2 8b45f801 c28b45fc 01d089c7.....E....E..... 0050 e8000000 008b45f8 c9c3......E... Contents of section .data: 00005400000055000000T...U... Contents of section .rodata: 0000 25640a00 %d..Contents of section .comment: 0000 00474343 3a202847 4e552920 31342e32 .GCC:(GNU)14.20010 2e3120323032353032303700.120250207. Contents of section .note.gnu.property: 0000 040000002000000005000000 474e5500...........GNU. 0010 020001c0 04000000 01000000 00000000................0020 010001c0 04000000 01000000 00000000................Contents of section .eh_frame: 00001400000000000000 017a5200 01781001.........zR..x..0010 1b0c0708900100001c000000 1c000000................0020 000000002700000000410e10 8602430d........A....C. 0030 06620c07 08000000 1c000000 3c000000 .b............. 0040 000000003300000000410e10 8602430d....3....A....C. 0050 066e0c07 08000000 .n......Disassembly of section .text: 0000000000000000func1:0:55push %rbp1:4889e5 mov %rsp,%rbp4:4883ec10sub$0x10,%rsp8:897d fc mov %edi,-0x4(%rbp)b: 8b45fc mov -0x4(%rbp),%eax e:89c6 mov %eax,%esi10:488d 05 00 00 00 00 lea 0x0(%rip),%rax# 17 func10x1717:4889c7 mov %rax,%rdi 1a: b8 00 00 00 00 mov$0x0,%eax 1f: e8 00 00 00 00 call24func10x2424:90nop25: c9 leave26: c3 ret 0000000000000027main:27:55push %rbp28:4889e5 mov %rsp,%rbp 2b:4883ec10sub$0x10,%rsp 2f: c745f8 01 00 00 00 movl$0x1,-0x8(%rbp)36: 8b1500 00 00 00 mov 0x0(%rip),%edx# 3c main0x153c: 8b 05 00 00 00 00 mov 0x0(%rip),%eax# 42 main0x1b42: 01 c2add%eax,%edx44: 8b45f8 mov -0x8(%rbp),%eax47: 01 c2add%eax,%edx49: 8b45fc mov -0x4(%rbp),%eax 4c: 01 d0add%edx,%eax 4e:89c7 mov %eax,%edi50: e8 00 00 00 00 call55main0x2e55: 8b45f8 mov -0x8(%rbp),%eax58: c9 leave59: c3 ret其他段# 显示段表、符号表、重定位表等$ objdump-xsimpleSection.o simpleSection.o:fileformatelf64-x86-64 simpleSection.o architecture: i386:x86-64, flags 0x00000011: HAS_RELOC, HAS_SYMS start address 0x0000000000000000 Sections: Idx Name Size VMA LMA File off Algn0.text 0000005a 0000000000000000 0000000000000000 000000402**0 CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE1.data 00000008 0000000000000000 0000000000000000 0000009c2**2 CONTENTS, ALLOC, LOAD, DATA2.bss 00000008 0000000000000000 0000000000000000 000000a42**2 ALLOC3.rodata 00000004 0000000000000000 0000000000000000 000000a42**0 CONTENTS, ALLOC, LOAD, READONLY, DATA4.comment 0000001c 0000000000000000 0000000000000000 000000a82**0 CONTENTS, READONLY5.note.GNU-stack 00000000 0000000000000000 0000000000000000 000000c42**0 CONTENTS, READONLY6.note.gnu.property 00000030 0000000000000000 0000000000000000 000000c82**3 CONTENTS, ALLOC, LOAD, READONLY, DATA7.eh_frame 00000058 0000000000000000 0000000000000000 000000f82**3 CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA SYMBOL TABLE: 0000000000000000 ldf*ABS* 0000000000000000 simpleSection.c 0000000000000000 l d .text 0000000000000000 .text 0000000000000000 l d .data 0000000000000000 .data 0000000000000000 l d .bss 0000000000000000 .bss 0000000000000000 l d .rodata 0000000000000000 .rodata 0000000000000004 l O .data 0000000000000004 static_var.1 0000000000000004 l O .bss 0000000000000004 static_var2.0 0000000000000000 g O .data 0000000000000004 global_init_var 0000000000000000 g O .bss 0000000000000004 global_uinit_var 0000000000000000 g F .text 0000000000000027 func1 0000000000000000 *UND* 0000000000000000printf0000000000000027 g F .text 0000000000000033 main RELOCATION RECORDS FOR[.text]: OFFSET TYPE VALUE 0000000000000013 R_X86_64_PC32 .rodata-0x0000000000000004 0000000000000020 R_X86_64_PLT32 printf-0x0000000000000004 0000000000000038 R_X86_64_PC32 .data 000000000000003e R_X86_64_PC32 .bss 0000000000000051 R_X86_64_PLT32 func1-0x0000000000000004 RELOCATION RECORDS FOR[.eh_frame]: OFFSET TYPE VALUE 0000000000000020 R_X86_64_PC32 .text 0000000000000040 R_X86_64_PC32 .text0x0000000000000027符号表$ readelf-ssimpleSection.o Symbol table.symtabcontains13entries: Num: Value Size Type Bind Vis Ndx Name0: 00000000000000000NOTYPE LOCAL DEFAULT UND1: 00000000000000000FILE LOCAL DEFAULT ABS simpleSection.c2: 00000000000000000SECTION LOCAL DEFAULT1.text3: 00000000000000000SECTION LOCAL DEFAULT3.data4: 00000000000000000SECTION LOCAL DEFAULT4.bss5: 00000000000000000SECTION LOCAL DEFAULT5.rodata6: 00000000000000044OBJECT LOCAL DEFAULT3static_var.17: 00000000000000044OBJECT LOCAL DEFAULT4static_var2.08: 00000000000000004OBJECT GLOBAL DEFAULT3global_init_var9: 00000000000000004OBJECT GLOBAL DEFAULT4global_uinit_var10: 000000000000000039FUNC GLOBAL DEFAULT1func111: 00000000000000000NOTYPE GLOBAL DEFAULT UNDprintf12: 000000000000002751FUNC GLOBAL DEFAULT1main可执行文件查看程序头表程序头描述了ELF文件如何被操作系统映射到进程虚拟地址空间。# 程序头表$ readelf-lsectionMapping.elf Elffiletypeis EXEC(Executablefile)Entry point 0x402d60 There are12program headers, starting at offset64Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flags Align LOAD 0x0000000000000000 0x0000000000400000 0x0000000000400000 0x0000000000000518 0x0000000000000518 R 0x1000 LOAD 0x0000000000001000 0x0000000000401000 0x0000000000401000 0x000000000007a7ed 0x000000000007a7ed R E 0x1000 LOAD 0x000000000007c000 0x000000000047c000 0x000000000047c000 0x0000000000031b88 0x0000000000031b88 R 0x1000 LOAD 0x00000000000ae0c8 0x00000000004ae0c8 0x00000000004ae0c8 0x0000000000005960 0x000000000000b1a0 RW 0x1000 NOTE 0x00000000000002e0 0x00000000004002e0 0x00000000004002e0 0x0000000000000024 0x0000000000000024 R 0x4 NOTE 0x00000000000adb28 0x00000000004adb28 0x00000000004adb28 0x0000000000000040 0x0000000000000040 R 0x8 NOTE 0x00000000000adb68 0x00000000004adb68 0x00000000004adb68 0x0000000000000020 0x0000000000000020 R 0x4 TLS 0x00000000000ae0c8 0x00000000004ae0c8 0x00000000004ae0c8 0x0000000000000038 0x0000000000000050 R 0x8 GNU_PROPERTY 0x00000000000adb28 0x00000000004adb28 0x00000000004adb28 0x0000000000000040 0x0000000000000040 R 0x8 GNU_SFRAME 0x00000000000a18a8 0x00000000004a18a8 0x00000000004a18a8 0x000000000000c18a 0x000000000000c18a R 0x8 GNU_STACK 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000000 RW 0x10 GNU_RELRO 0x00000000000ae0c8 0x00000000004ae0c8 0x00000000004ae0c8 0x0000000000003f38 0x0000000000003f38 R 0x1 Section to Segment mapping: Segment Sections... 00 .note.gnu.build-id .rela.plt 01 .init .plt .text .fini 02 .rodata .stapsdt.base rodata.cst32 .eh_frame .sframe .gcc_except_table .note.gnu.property .note.ABI-tag 03 .tdata .init_array .fini_array .data.rel.ro .got .got.plt .data .bss 04 .note.gnu.build-id 05 .note.gnu.property 06 .note.ABI-tag 07 .tdata .tbss 08 .note.gnu.property 09 .sframe1011.tdata .init_array .fini_array .data.rel.ro .got程序虚拟地址空间分布$ gcc-otestsingleton.c-static$ ./test[1]4869$cat/proc/4869/map map_files/ maps $cat/proc/4869/maps 起始地址-结束地址 权限 偏移量 设备号 inode 路径名/描述 00400000-00401000 r--p 00000000103:0614811163/home/user/.leetcode/test/test 00401000-0047c000 r-xp 00001000103:0614811163/home/user/.leetcode/test/test 0047c000-004a2000 r--p 0007c000103:0614811163/home/user/.leetcode/test/test 004a2000-004a7000 r--p 000a1000103:0614811163/home/user/.leetcode/test/test 004a7000-004a9000 rw-p 000a6000103:0614811163/home/user/.leetcode/test/test 004a9000-004af000 rw-p 00000000 00:00012047000-12069000 rw-p 00000000 00:000[heap]70381afb7000-70381afbb000 r--p 00000000 00:000[vvar]70381afbb000-70381afbd000 r-xp 00000000 00:000[vdso]7fff43702000-7fff43723000 rw-p 00000000 00:000[stack]ffffffffff600000-ffffffffff601000--xp00000000 00:000[vsyscall]手动生成目标文件# 二进制文件生成目标文件$ objcopy-Ibinary-Oelf64-x86-641.jpg pic.o $ objdump-htpic.o pic.o:fileformatelf64-x86-64 Sections: Idx Name Size VMA LMA File off Algn0.data 00094bbe 0000000000000000 0000000000000000 000000402**0 CONTENTS, ALLOC, LOAD, DATA SYMBOL TABLE: 0000000000000000 g .data 0000000000000000 _binary_1_jpg_start 0000000000094bbe g .data 0000000000000000 _binary_1_jpg_end 0000000000094bbe g *ABS* 0000000000000000 _binary_1_jpg_size $du-shpic.o 596K pic.o $du-sh1.jpg 596K1.jpg生成的目标文件有全局符号可用代码可直接使用这个段处理文件。Windows# /ALL打印目标文件的所有相关信息dumpbin/ALL simpleSection.obj simpleSection.txt# /SUMMARY输出所有段的段名和长度dumpbin/SUMMARY simpleSection.obj

相关新闻

ARM7 LPC210x定时器、PWM与看门狗实战配置与避坑指南
2026/6/20 13:59:12

ARM7 LPC210x定时器、PWM与看门狗实战配置与避坑指南

1. 项目概述与核心价值在嵌入式系统开发,尤其是基于ARM7内核的LPC2101/02/03这类经典微控制器的项目中,定时器外设的掌握程度直接决定了你能否实现精准的时序控制、高效的PWM驱动以及可靠的系统监控。很多新手开发者拿到芯片手册,看到一堆寄存…

阅读更多
求职简历 PPT 模板怎么选?实测优选百度文库 AI 智能模板,覆盖全行业高效落地
2026/6/20 12:59:12

求职简历 PPT 模板怎么选?实测优选百度文库 AI 智能模板,覆盖全行业高效落地

简介:想要高效打造高通过率简历 PPT,选对模板平台是关键。本文围绕求职场景深度解析百度文库简历 PPT 模板全链路优势,依托平台 18 亿专业资源、GenFlow4.0 智能底座、行业首创智能 PPT 能力,从产品底层逻辑、内容资源、排版设计、…

阅读更多
AI智能体工程师实战手册:从单点突破到生产就绪的四阶路线
2026/6/20 12:59:12

AI智能体工程师实战手册:从单点突破到生产就绪的四阶路线

1. 这不是一张“学习地图”,而是一份智能体工程师的实战作战手册你点开这篇内容,大概率不是为了收藏吃灰,而是正卡在某个环节:可能是刚跑通一个LangChain示例,却不知道下一步该往哪堆代码;也可能是老板甩来…

阅读更多
华硕笔记本终极控制指南:如何用G-Helper彻底摆脱Armoury Crate的臃肿束缚
2026/6/20 14:59:12

华硕笔记本终极控制指南:如何用G-Helper彻底摆脱Armoury Crate的臃肿束缚

华硕笔记本终极控制指南:如何用G-Helper彻底摆脱Armoury Crate的臃肿束缚 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Viv…

阅读更多
3分钟快速上手:GitHub汉化插件让你的英文界面秒变中文
2026/6/20 14:59:12

3分钟快速上手:GitHub汉化插件让你的英文界面秒变中文

3分钟快速上手:GitHub汉化插件让你的英文界面秒变中文 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 你是否曾在GitHub的…

阅读更多
HSTracker:3分钟上手的macOS炉石助手实战指南
2026/6/20 14:59:12

HSTracker:3分钟上手的macOS炉石助手实战指南

HSTracker:3分钟上手的macOS炉石助手实战指南 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 如果你是macOS平台的炉石传说玩家,一定遇到过这样的…

阅读更多
5分钟上手:无需训练的AI换脸工具roop-unleashed终极指南
2026/6/20 14:59:12

5分钟上手:无需训练的AI换脸工具roop-unleashed终极指南

5分钟上手:无需训练的AI换脸工具roop-unleashed终极指南 【免费下载链接】roop-unleashed Evolved Fork of roop with Web Server and lots of additions 项目地址: https://gitcode.com/gh_mirrors/ro/roop-unleashed 你是否曾想过,只需一张照片…

阅读更多
网盘直链解析工具:八大平台免费高速下载解决方案
2026/6/20 14:59:12

网盘直链解析工具:八大平台免费高速下载解决方案

网盘直链解析工具:八大平台免费高速下载解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

阅读更多
C++迭代器与范围编程
2026/6/20 13:59:12

C++迭代器与范围编程

C迭代器与范围编程迭代器是STL中连接容器和算法的桥梁。C20引入的范围库提供了更简洁的遍历方式,结合视图可以高效处理数据序列。迭代器类别决定其能力:输入、输出、前向、双向和随机访问。#include #include #include #include #include #includevoid i…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/17 23:21:18

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/18 4:35:02

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/18 15:04:04

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案
2026/6/20 0:59:03

洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案

洛雪音乐终极音源指南:一站式获取全网无损音乐的完整解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 你是否厌倦了在不同音乐平台之间来回切换,只为找到一首歌的无…

阅读更多
Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)
2026/6/20 0:59:03

Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版)

Display Driver Uninstaller深度清理方案:显卡驱动残留问题的终极解决方案(2024版) 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitco…

阅读更多
深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置
2026/6/20 0:59:03

深入解析MC68HC908AS32A的SCI模块:从异步通信原理到寄存器实战配置

1. 项目概述:深入MC68HC908AS32A的异步串行通信核心在嵌入式系统开发中,尤其是面对工业控制、车载电子或智能仪表这类需要设备间稳定对话的场景,串行通信接口(SCI)往往是工程师最可靠的老朋友。它不像并行总线那样需要…

阅读更多
GIT修改用户名
2026/6/20 3:11:17

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/19 20:40:12

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/20 7:34:01

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多