加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

几个命令了解ELF文件的”秘密“

发布时间:2019-10-14 18:12:46 所属栏目:Windows 来源:守望先生
导读:副标题#e# 前言 在Linux中,可执行文件的格式是ELF格式,而有一些命令可以帮助我们了解它们更多的秘密,以此来帮助我们解决问题。 示例程序 我们的示例程序如下: #includestdio.h intmain(intargc,char*argv[]) { printf(helloshouwangxianshengn); retur

新加的函数或者全局变量不知道有没有编译进去?如何看看符号表里有没有吧(前提是符号表没有被去掉):

  1. $ nm hello |grep main  #符号表中查找main函数 
  2.                  U __libc_start_main@@GLIBC_2.2.5 
  3. 0000000000400526 T main 

如果没有找到或者前面是U,没有地址,表明在这个elf文件中没有定义这个函数。

链接出问题的时候很有用。

为ELF文件瘦身

前面通过file查看文件时,看到有not stripped的字样,由于它里面包含了一些符号表信息,因为文件会稍大,如果去掉,二进制文件将会变小,但是里面的符号表信息也就没有了,将会影响问题定位。

  1. $ ls -lh hello  #瘦身前 
  2. -rwxrwxr-x 1 root root 8.4K 
  3. $ strip hello 
  4. $ ls -lh hello #瘦身后 
  5. -rwxrwxr-x 1 root root 6.2K 

可以看到,瘦身后二进制文件变得更小。当可执行文件越大时,瘦身效果就会更明显了。当然放心,这不会影响程序的正常运行,只是对调试和问题定位有影响。

这个时候再看符号表:

  1. $ nm hello 
  2. nm: hello: no symbols 

打印文件校验和

二进制文件传输过程中有没有被损坏或者是否是同一个版本,看看校验和以及程序块计数吧:

  1. $ sum hello 
  2. 33513     7 

当然你也可以使用:

  1. $ md5sum hello 
  2. 521efed706c3b485dd3b5e96e48b138a  hello 

来比对md5值。

总结

ELF文件中隐藏了丰富的信息,只要使用得当,将会帮助我们更好地进行开发或者问题的定位。

【编辑推荐】

  1. 处理Linux文件的3个技巧
  2. Linux 内核将引入安全锁定功能
  3. 安全强化你的 Linux 服务器的七个步骤
  4. 详解3种区别Linux服务器是物理机或者虚拟机的方法
  5. 生成Linux运行时间报告的Bash脚本
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读