objdump反汇编文件解析

命令使用

objdump可以对可执行文件进行反汇编
其常用参数为:

  • objdump -d : 将代码段反汇编;
  • objdump -S : 将代码段反汇编的同时,将反汇编代码与源代码交替显示,编译时需要使用-g参数,即需要调试信息;
  • objdump -C : 将C++符号名逆向解析
  • objdump -l : 反汇编代码中插入文件名和行号
  • objdump -j section : 仅反汇编指定的section

反汇编输出结果解析

有很多个参数,这里先从基本的反汇编开始,即-d参数的输出

objdump进行反汇编后的输出结果通常包含多个段,每个段对应于可执行文件或共享库的不同部分
一些常见段:

  • .text:包含程序的机器码指令,即可执行代码.反汇编结果中大部分内容来自于这个段
  • .data:程序的初始化数据.可能包含全局变量和静态变量
  • .rodata:只读数据,如常量字符串.这些数据是只读的,不允许被修改
  • .bss:未初始化的全局和静态变量.只包含变量的大小和位置信息,不包含实际的数据
  • .plt:过程链接表(Procedure Linkage Table),包含用于进行动态链接的代码
  • .got:全局偏移标(Global Offset Table),包含全局变量和函数的地址
  • .eh_frame:异常处理框架信息,用于处理异常可展开栈
  • .comment:包含于目标架构/编译器版本等相关的注释信息
  • .fini:包含在程序退出时执行的代码,用于清理和收尾工作
  • .init:通常包含在程序启动时执行的代码,用于初始化和准备运行时环境。

NT:实际的输出内容会根据目标文件的类型和编译选项而有所不同.可以使用objdump -h 可执行文件查看更详细的段信息,其中包含每个段的起始地址\大小等信息
如一个简单的文件读取C代码,编译后为可执行文件hi,进行反编译后用objdump -h hi查看段信息为
objdump反汇编文件解析_第1张图片

你可能感兴趣的:(系统安全,pwn,linux,系统安全)