现在我从 ARM 机器的内存中转储了一些内容。问题是实际上它们是 ARM 指令,但我不知道如何将这些十六进制数字转换为 ARM 指令。我现在拥有的是“arm-elf-objdump”可以读取.bin文件并反汇编.bin文件中的内容。但我只有十六进制数字的文本,这与二进制文件不同。我该如何进行解码?
例如
800104: e3a00000 mov r0, #0 ; 0x0
800108: e59f104c ldr r1, [pc, #76] ; 80015c <_jump_main+0x4>
80010c: e59f204c ldr r2, [pc, #76] ; 800160 <_jump_main+0x8>
实际上“e3a00000”的意思是“mov r0, #0”。应该有一个工具可以做到这一点。 有人可以给我一些建议吗?
最佳答案
将文本文件转换为二进制文件,即使您必须自己编写脚本/应用程序然后使用 objdump 进行反汇编,这也应该很简单。
objdump -D -b binary -marm <binary_file>
但是也要小心指令编码,如果选择 arm
进行 thumb
编码,您将得到截然不同的结果。请参阅objdump manual关于--disassembler-options=force-thumb
的部分。
关于memory - 解码从ARM内存转储的数据的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14513429/