linux应用程序堆和栈起始地址问题
 
					
				通过cat /proc/进程号/maps获得堆栈地址。
005e9000-00603000 r-xp 00000000 fd:00 4228679    /lib/ld-2.5.so
00603000-00604000 r--p 00019000 fd:00 4228679    /lib/ld-2.5.so
00604000-00605000 rw-p 0001a000 fd:00 4228679    /lib/ld-2.5.so
00607000-00747000 r-xp 00000000 fd:00 4228694    /lib/i686/nosegneg/libc-2.5.so
00747000-00749000 r--p 00140000 fd:00 4228694    /lib/i686/nosegneg/libc-2.5.so
00749000-0074a000 rw-p 00142000 fd:00 4228694    /lib/i686/nosegneg/libc-2.5.so
0074a000-0074d000 rw-p 0074a000 00:00 0 
00949000-0094a000 r-xp 00949000 00:00 0          [vdso]
08048000-08049000 r-xp 00000000 fd:00 2066890    /home/temp/a.out
08049000-0804a000 rw-p 00000000 fd:00 2066890    /home/temp/a.out
b7ef2000-b7ef3000 rw-p b7ef2000 00:00 0 
b7f07000-b7f09000 rw-p b7f07000 00:00 0 
bf946000-bf95c000 rw-p bf946000 00:00 0          [stack]
要想获得更具体的信息,可以使用readelf -S 可执行文件名,获得数据放在虚拟内存的什么位置,以及是否可读写等。
 获得如下信息:
There are 28 section headers, starting at offset 0x998:
Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        08048114 000114 000013 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            08048128 000128 000020 00   A  0   0  4
  [ 3] .gnu.hash         GNU_HASH        08048148 000148 000020 04   A  4   0  4
  [ 4] .dynsym           DYNSYM          08048168 000168 000050 10   A  5   1  4
  [ 5] .dynstr           STRTAB          080481b8 0001b8 00004c 00   A  0   0  1
  [ 6] .gnu.version      VERSYM          08048204 000204 00000a 02   A  4   0  2
  [ 7] .gnu.version_r    VERNEED         08048210 000210 000020 00   A  5   1  4
  [ 8] .rel.dyn          REL             08048230 000230 000008 08   A  4   0  4
  [ 9] .rel.plt          REL             08048238 000238 000018 08   A  4  11  4
  [10] .init             PROGBITS        08048250 000250 000017 00  AX  0   0  4
  [11] .plt              PROGBITS        08048268 000268 000040 04  AX  0   0  4
  [12] .text             PROGBITS        080482b0 0002b0 0002c8 00  AX  0   0 16
  [13] .fini             PROGBITS        08048578 000578 00001c 00  AX  0   0  4
  [14] .rodata           PROGBITS        08048594 000594 000110 00   A  0   0  4
  [15] .eh_frame         PROGBITS        080486a4 0006a4 000004 00   A  0   0  4
  [16] .ctors            PROGBITS        080496a8 0006a8 000008 00  WA  0   0  4
  [17] .dtors            PROGBITS        080496b0 0006b0 000008 00  WA  0   0  4
  [18] .jcr              PROGBITS        080496b8 0006b8 000004 00  WA  0   0  4
  [19] .dynamic          DYNAMIC         080496bc 0006bc 0000c8 08  WA  5   0  4
  [20] .got              PROGBITS        08049784 000784 000004 04  WA  0   0  4
  [21] .got.plt          PROGBITS        08049788 000788 000018 04  WA  0   0  4
  [22] .data             PROGBITS        080497a0 0007a0 000008 00  WA  0   0  4
  [23] .bss              NOBITS          080497a8 0007a8 000008 00  WA  0   0  4
  [24] .comment          PROGBITS        00000000 0007a8 000114 00      0   0  1
  [25] .shstrtab         STRTAB          00000000 0008bc 0000db 00      0   0  1
  [26] .symtab           SYMTAB          00000000 000df8 000460 10     27  48  4
  [27] .strtab           STRTAB          00000000 001258 000266 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)
回复
| 有奖活动 | |
|---|---|
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
| 【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
| 送您一块开发板,2025年“我要开发板活动”又开始了! | |


 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

