objcopy/objdump/readelf等工具使用

转载:https://blog.csdn.net/joans123/article/details/8159262?utm_source=blogxgwz9

  1. objcopy 复制及修改目标文件
    -I : 输入文件的格式(binary, elf32-i386等)
    -O : 输出文件的格式
    -B : 二进制文件体系结构(i386, arm等)

    -R : 删除不用的section(.comment .note 等)
    -j : 仅留下有用的section(.text .data 等)
    -S : 不复制重定位和符号信息
    -K : 保留某个符号
    -N : 去掉某个符号
    -L : 使某个符号local化
    -W : 使某个符号weaken化

    例如: objcopy -S -O binary -j .text a.out a.bin 只保留.text的二进制文件.

  2. objdump 显示目标文件信息
    -f : 显示文件头信息(参考readelf -h)
    -d : 反汇编目标文件中需要执行指令的section
    -D : 反汇编目标文件中所有的section
    -h : 显示section 头信息(参考readelf -S)
    -x : 显示所有信息(参考readelf -a)
    -s : 显示各个section的十六进制码以及对应的ascii码
    -m : CPU架构
    -b : 目标文件格式,默认elf32,可以指定为binary二进制格式.

    例如: objdump -D -b binary -m i386 a.bin 对二进制文件进行反汇编

  3. readelf 显示目标elf文件信息

    -a : 显示所有信息
    -h : 显示elf头信息
    -l : 显示Program Header Table中的每个Entry信息
    -S : 显示Section Header Table中的每个Entry信息
    -g : 显示Section Group信息
    -s : 显示Symbol Table中的每个Entry信息
    -e : 等同于 -h + -l + -s
    -n : 显示.note段信息
    -r : 显示可重定位信息
    -d : 显示Dynamic Section信息

  4. nm 列出目标文件中的符号
    -a : 列出所有符号,包括debugger-only的符号.
    -A : 显示文件名
    -g : 只显示外部符号
    -C : 将低级符号解码(demangle)成用户级名字,使C++函数名具有可读性.
    -D : 显示Dynamic符号
    -u : 仅显示没有定义的符号
    -r : 反序显示
    -n : 按地址顺序显示

nm列出符号的地址,符号类型和符号名字.其中符号说明如下:
A : 绝对地址,链接时不改变.
B : 符号位于bss数据段
C : 符号为common. common symbol是未初始化数据段(参考汇编文件中.common)
D : 已初始化数据段中的符号
G : 符号位于已初始化数据段中,重要用于small data object提高访问速度.
I : 该符号是对另一个符号的间接引用
N : 该符号是一个debugging符号
R : 只读数据去符号(C语言中的const修饰)
S : 符号位于非初始化数据区,用于small object
T : 符号位于text section
U : 符号未定义
V : 该符号是一个weak object
W : 弱符号
? : 类型未定义

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值