objdump反汇编文件解析

命令使用

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

  • objdump -d <file(s)>: 将代码段反汇编;
  • objdump -S <file(s)>: 将代码段反汇编的同时,将反汇编代码与源代码交替显示,编译时需要使用-g参数,即需要调试信息;
  • objdump -C <file(s)>: 将C++符号名逆向解析
  • objdump -l <file(s)>: 反汇编代码中插入文件名和行号
  • objdump -j section <file(s)>: 仅反汇编指定的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查看段信息为
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值