正在扫描电话'没有反汇编程序的指令?

时间:2016-08-17 03:33:28

标签: c windows debugging pdb debug-symbols

我正在为Windows X64中的文本编辑器编写调试器。我实施了断点和步骤/步骤。因为我基本上需要获取当前行(我通过PDB文件和DbgHelp获得)的指令地址和下一行,看看是否有' sa&#? 39;调用'这些地址之间的指令,如果是这样,我们会介入其他地址。

我想知道是否有办法通过DbgHelp / PDB获取此信息(无需编写或使用反汇编程序)?或者可能利用指令的某些字节顺序,可能会调用'是唯一的,它的字节排序只有一种方式,所以我可以逐字节读取,看看它们是否匹配'呼叫'? (这样我就不必做完全或甚至部分的挫折)

想法?任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

不幸的是,没有。

x86_64代码中callq最常见的操作码是e8,但是无法区分e8含义callqe8在另一个上下文(例如,作为常量的一部分),而不完全反汇编二进制以找出每条指令的起始位置。请记住,x86使用可变长度指令,因此在指令开始的地方并不总是很明显。