比“objdump -d”更好的反汇编程序?

比“objdump -d”更好的反汇编程序?

我注意到,在使用 时objdump -d,它输出程序集(采用 Intel 语法或 AT&T 语法)、二进制操作码编码和地址号。就我而言,我只希望反汇编程序只输出 AT&T 程序集,因为删除前 18-24 个字符(是的,没有算在内)以将程序集从一个目标文件复制到程序集文件是令人恼火的。

答案1

有人可以帮忙吗?

是的!man objdump能。寻找AT&T(/AT&T enter)!然后,--no-addresses 应该工作。

您可以使用该选项传递您最喜欢的汇编器语法模式-M;就你而言,-M att.

如果您想要一个通用性更强的反汇编程序,请尝试radare2(尽管需要半个小时才能习惯)。

答案2

--no-addresses中提到的标志马库斯·穆勒的回答Binutils 2.35 中引入。对于旧版本objdump(Ubuntu 20.04 或更早版本、RHEL 8 或更早版本),您可以通过切换到旧的反汇编输出(具有固定宽度地址和无编码指令),然后修剪输出来获得相同的结果。在 64 位平台上:

objdump -d --prefix-addresses ... | cut -c20-

相关内容