使用 objdump 进行 ARM 架构:反汇编到 ARM

发布于 2024-09-26 05:55:59 字数 163 浏览 5 评论 0原文

我有一个目标文件,正在尝试反汇编它。当我使用时:

objdump -d example.o

我得到了文件格式为 elf64-x86-64 的代码程序集。

我正在尝试将其反汇编到 ARM 中,我该怎么做?

I have an object file and am trying to disassemble it. When I use:

objdump -d example.o

I get an assembly in code in the file format of elf64-x86-64.

I am trying to disassemble this into ARM, how do I go about doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

谁人与我共长歌 2024-10-03 05:55:59

如果你想反汇编ARM代码,你最好有一个ARM工具链,这就是我得到的:

http://bb.osmocom.org/trac/wiki/toolchain

有了这个之后,您可以使用arm-elf-objdump代替objdump。
我使用的命令是

arm-elf-objdump -D -b binary -marm binaryfile.dat

如果你查看联机帮助页,你会发现“-b”后面跟着文件类型。抱歉,我不知道如何告诉 -b 您想要分析 .o 文件。 “-marm”会告诉CPU是ARM。

希望这可以帮助你。

If you want to do disassemble of ARM code, you'd better have an ARM tool chain, this is what I got:

http://bb.osmocom.org/trac/wiki/toolchain

After you have this, you can use arm-elf-objdump instead of objdump.
The command I used is

arm-elf-objdump -D -b binary -marm binaryfile.dat

If you look the manpage, you will find "-b" is followed by the file type. Sorry I don't know how to tell -b you want to analyze a .o file. "-marm" will tell the cpu is ARM.

Hope this can help you.

画尸师 2024-10-03 05:55:59

在反汇编二进制文件之前,请通过“file”检查文件类型,例如:

文件 dnslookup.o

dnslookup.o:ELF 32 位 LSB 可重定位、ARM、EABI5 版本 1 (SYSV)、
没有剥离

所以现在我们知道它是一个ARM对象或ELF文件。

要反汇编arm目标文件,请使用
arm-linux-gnueabi-objdump。在 Ubuntu 中,“arm-linux-gnueabi-objdump”是 ARM 二进制文件的默认反汇编程序 - 不需要编译。

要安装它,只需执行:

sudo apt-get install binutils-arm-linux-gnueabi

此软件包中还有其他二进制文件,可以为您进一步分析 ARM 二进制文件。

Before disassembling the binary, check the filetype via "file", for example:

file dnslookup.o

dnslookup.o: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV),
not stripped

So now we know it is an ARM object or ELF file.

To disassemble arm object file use
arm-linux-gnueabi-objdump. In Ubuntu, "arm-linux-gnueabi-objdump" is the default disassembler for ARM binaries - no compilation is needed.

To install it, just do:

sudo apt-get install binutils-arm-linux-gnueabi

There are also other binaries inside this package that can further analyze the ARM binaries for you.

银河中√捞星星 2024-10-03 05:55:59

使用正确的目标编译 binutils 以获得知道如何反汇编 ARM 的 binutils objdump 二进制文件。

http://www.gnu.org/software/binutils/

./configure --enable-targets=all 例如。

选择您的目标,制作并使用新的 objdump 二进制文件,该二进制文件可识别您的目标。有关定位的更多信息,请参阅 binutils/README 文件。

objdump -D t3c # stock binary
objdump: t3c: File format not recognized

./../../binutils-2.22/binutils/objdump -D t3c # latest compiled from source with all targets
In archive t3c:

t3c:arm:     file format mach-o-le


Disassembly of section .text:

00002d94 <start>:
    2d94:   e59d0000    ldr r0, [sp]
...

Compile binutils with the right target(s) to get binutils objdump binary that knows how to disassemble ARM.

http://www.gnu.org/software/binutils/

./configure --enable-targets=all for example.

Pick your targets, make and use the new objdump binary that is your-target-aware. See the binutils/README file for more information on targeting.

objdump -D t3c # stock binary
objdump: t3c: File format not recognized

vs.

./../../binutils-2.22/binutils/objdump -D t3c # latest compiled from source with all targets
In archive t3c:

t3c:arm:     file format mach-o-le


Disassembly of section .text:

00002d94 <start>:
    2d94:   e59d0000    ldr r0, [sp]
...
冰葑 2024-10-03 05:55:59

安装ELDK并使用arm-linux-objdump。您正在尝试使用仅识别 x86 的程序反汇编 ARM 指令。

Install the ELDK and use arm-linux-objdump. You're trying to disassemble ARM instructions using a program that only knows x86.

赤濁 2024-10-03 05:55:59

我在 macOS (arm64) 上遇到了这个问题。由于某种原因,configure 已从 Xcode SDK 中找到了 objdump,并且我没有进行交叉编译,因此 Xcode 也必须包含 Intel 二进制文件。

我所要做的就是brew install binutils——问题就解决了。

I had this issue on macOS (arm64). For some reason, configure had located objdump from the Xcode SDK, and I'm not cross-compiling, so Xcode must contain the Intel binaries as well.

All I had to do was brew install binutils – problem solved.

滥情哥ㄟ 2024-10-03 05:55:59

我使用的是 Debian 12。所以我安装了 arm-trusted-firmware-tools 这是 Debian 的 arm 反汇编工具:

sudo apt install arm-trusted-firmware-tools

之后我使用与上面类似的命令(qiuhan1989),并且将文件另存为 .asm 文件

arm-none-eabi-objdump -D -b binary -marm binary.elf > binary.elf.asm

I am using Debian 12. So I install arm-trusted-firmware-tools which is Debian's arm disassembly tool:

sudo apt install arm-trusted-firmware-tools

After that I use similar command as above (qiuhan1989), and save the file as .asm one

arm-none-eabi-objdump -D -b binary -marm binary.elf > binary.elf.asm
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文