二进制代码的阅读20130406.docVIP

  • 4
  • 0
  • 约1.12万字
  • 约 8页
  • 2017-02-28 发布于湖北
  • 举报
Linux下二进制代码的阅读 大多数时候,我们研究的是如何阅读源代码。但在一些情况下,比如源代码不公开或得到源代码的代价很高的情况下,我们又不得不需要了解程序的行为,这 时阅读二进制文件就非常重要。假设现在有一个二进制可执行文件,我们木有源代码,但要了解它的实现,这里仅简单列出一些常用的工具。 阅读方式可分为两个方面:静态阅读和动态阅读。 静态阅读 首先,file命令可以查看可执行文件的大体信息。比如是哪种格式的,哪个体系结构的,有没有调试信息等。这些决定了需要用哪个版本的工具进行进一 步查看。比如如果是arm体系的可执行文件就可用arm toolchain里的工具,如arm-eabi-objdump,arm-eabi-gdb等。 众所周知,GNU Binutils提供了一系列解析和操作二进制文件的工具,最常用的如objdump,其最主要的功能之一是反汇编: objdump -d libxxx.so 其它常用选项包括: -x 打印所有头信息 -s 打印所有段的内容 -S 将反汇编和源代码一起打印 -r 打印重定位表 -R 打印动态重定位表 -D 打印所有段,即不止代码段 -t 打印符号表,和nm的功能类似,但格式不一样 -T 只打印动态链接的符号表项 等等。 readelf命令主要用于查看elf文件的元信息(如段信息等)。如查看可执行文件的头信息: readelf -h lib

文档评论(0)

1亿VIP精品文档

相关文档