memory - 解码从ARM内存转储的数据的问题

标签 memory arm decode objdump

现在我从 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/

相关文章:

c# - 看似第 22 条军规关于 : developing ARM solutions on a non-ARM device

Python UnicodeDecodeError : 'utf-8' codec can't decode byte 0x8c in position 2: invalid start byte

javascript - 当字符串末尾有 `\' 时,Json 字符串无法解码

performance - Spring Cloud 微服务内存使用情况

python - 完全删除python中的列表

performance - 寻找组合的函数优化——内存不足+速度

PHPExcel 1.8.0 内存在加载、 block 读取和迭代器时耗尽

c++ - 通用 ELF 中的重定位 (EM : 40)

c++ - 带有 libc++ 异常的 Clang

Python缓冲区解码