如何从操作码/机器代码获取汇编指令或助记符?

时间:2016-04-02 10:04:11

标签: c linux assembly opcode

我有一个使用简单c程序的gcc编译的二进制文件。 我正在编写自己的反汇编程序,我能够从ELF文件中读取ELF标题和其他标题。

我正在阅读ELF二进制文件中的#text; .text"部分。并尝试将opecode转换为助记符/汇编指令。

如何将原始操作码/机器代码转换为助记符/汇编指令? C源代码是:

#include <stdio.h>

int main()
{
  int i = 10;
  int j = 22 + i;

  return 0;
}

以下是我在阅读ELF文件后收到的原始操作码示例:

55 ffffff89 ffffffe5 ffffff83 ffffffec 20 ffffffc7 45 ffffffec 3 ffffffc7 45
fffffff0 41 ffffffc7 45 fffffff4 8 ffffffc7 45 fffffff8 21 ffffff8b 45
ffffffec ffffff83 ffffffc0 16 ffffff89 45 fffffffc ffffffb8 ffffffc9 ffffffc3

1 个答案:

答案 0 :(得分:2)

如果你安装了 GNU binutils (你可能有),你可以使用

objdump --disassemble elf-file

如果问题是&#34;为什么我会得到那些ffffff数字&#34;,那么你需要向我们展示产生数字的代码。您很可能从签名字符到int。符号扩展问题。