我一直在用objdump来研究Linux ELF二进制文件中的汇编代码.

有时会通过存储在rodata(只读数据)部分的跳转表进行间接跳转.

如何获取objdump或任何其他工具来向我显示此数据部分的内容?

我可以在调试器中执行程序并判断相关地址,但我不想这样做,因为它必须以交互方式完成.

理想的答案是找到一个工具,它不仅能向我显示内容,还能让我控制显示格式,就像od一样.

推荐答案

objdump -s -j .rodata exefile

给出rodata节内容的并排十六进制/可打印ASCII转储,如:

Contents of section .rodata:
 0000 67452301 efcdab89 67452301 efcdab89  gE#.....gE#.....
 0010 64636261 68676665 64636261 68676665  dcbahgfedcbahgfe

看起来里面没有任何东西可以控制格式,但这只是一个开始.我想,你总是可以把魔咒抽出来,然后把它喂给od:)

Linux相关问答推荐

在Zenity进度窗口上单击取消后如何停止bash脚本

在程序集x86_64中跳转后调用ret时出现分段故障

eBPF:仅使用系统调用加载 eBPF 程序并将其附加到 sys_enter_execve

Linux 中大型 TSV 的条件编辑

Linux BlueZ 5.65 hcitool 结合服务 UUID 和制造数据广告

8 个半小时范围的 Crontab 表达式

有必要注意非错误提示吗?好像没有找到包裹‘***’?

在 bash 中查找匹配多个模式的文件

如何使用 sed debug调试正则表达式?

Stripping linux 共享库

在没有root访问权限的情况下安装zsh?

未找到框架.NETFramework,Version=v4.7.1的参考程序集

KDE 桌面效果中的 OpenGL 和 XRender 有什么区别?

PuTTY:更改默认 SSH 登录目录

在亚马逊 ec2 linux 微型实例上的 virtualenv 中安装 scipy 时遇到问题

判断 VT-x 是否已激活而无需在 Linux 中重新启动?

判断环境变量是否已经设置

初学者如何在 Linux 中开始使用 Mono?

如何将初始输入通过管道传输到随后将是交互式的进程中?

crontab 在特定小时之间每 15 分钟运行一次