Linux开发工具 — readelf、objdump、hexdump。

本博文的主要内容是:1)readelf工具查看ELF文件的信息;2)hexdump工具查看这块内存;3)objdump工具对文件进行反汇编。
前一段时间对Linux不熟,所以很多命令不知道。学习C时候需要偶尔看一下汇编用来理解。我喜欢用问题的形式来学习和总结。

1. 如何看一个程序代码变量的存储布局?     
     这个问题在查看C代码中的一些关键字的作用很有效。如:const、static、extern等。readelf这个工具就派上用场了。
(1)readelf工具
          a. 作用:用来显示ELF文件的信息。
          b. 使用:readelf <option> <file>,其中我们常用选项有-a,<file>可以是目标文件或可执行文件。
          (想了解该工具详细的信息,请通过Linux下的man命令查一下。)
     下面通过例子来使用一下这个工具:
 int main(void)
 {
          printf("hello, welcome!\n");
          return 0;
 }
 用gcc编译后,通过readelf工具查看可执行文件。
 gcc -g hello.c -o hello
     readelf -a hello
     我们会看到:
ELF Header:
     Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
     Class:                             ELF32
     Data:                              2's complement, little endian
     Version:                           1 (current)
     OS/ABI:                            UNIX - System V
     ABI Version:                       0
     Type:                              EXEC (Executable file)
     Machine:                           Intel 80386
     Version:                           0x1
     Entry point address:               0x8048330
     Start of program headers:          52 (bytes into file)
     Start of section headers:          5052 (bytes into file)
     Flags:                             0x0
     Size of this header:               52 (bytes)
     Size of program headers:           32 (bytes)
     Number of program headers:         8
     Size of section headers:           40 (bytes)
     Number of section headers:         38
     Section header string table index: 35

 ELF Header描述了操作系统为UNIX,PC机体系结构是Intel 80386。Section Header Table中有38个Section Header ,
从文件地址5052开始,每个Section Header 占40字节,共320 字节,到文件地址0x207 结束。文件地址是这样定义的:
文件开头第一个字节的地址是0x8048330。
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值