用于二进制文件中显示组件的C程序

时间:2012-07-13 12:57:05

标签: c assembly

我正在尝试在二进制文件中显示汇编指令,但我该怎么办? 我如何知道MOV(例如)的参数是指针还是数字?
这是出于教育目的,我知道有GDB和其他工具。

提前感谢!

3 个答案:

答案 0 :(得分:1)

你的意思是disassembler?那么你有很多工具可供选择,例如:

  • OllyDbg的
  • IDA
  • objdump的

如果要将其集成到现有程序中,则需要一个反汇编引擎,例如BeaEngine或diStorm。

答案 1 :(得分:1)

您可以使用binutils内的许多库,例如 BFD 操作码

BFD 二进制文件描述符库,进行低级操作。

操作码库用于汇编和反汇编机器指令。

答案 2 :(得分:0)

您可能会从源到emulator找到有用的信息,它必须在执行模拟指令之前执行相同的解码任务。

我强烈建议首先定位一个小子集,最好是裸8086,然后按照历史发生的相同顺序添加扩展。这将帮助您确定在查找更多信息时要忽略的内容。所以不要不知所措。

对于MOV操作,操作数由第二个字节MOD-REG-REG / MEM字节指定(以最一般的形式)。操作数几乎总是寄存器或存储器位置(指针,可能使用“索引寄存器”即时构建)。只有少数指令接受文字操作数(数字)并且只接受,并且它们在第180页的1979 8086 Manual表中清楚地标记。