- 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)