我正在为Windows X64中的文本编辑器编写调试器。我实施了断点和步骤/步骤。因为我基本上需要获取当前行(我通过PDB文件和DbgHelp获得)的指令地址和下一行,看看是否有' sa&#? 39;调用'这些地址之间的指令,如果是这样,我们会介入其他地址。
我想知道是否有办法通过DbgHelp / PDB获取此信息(无需编写或使用反汇编程序)?或者可能利用指令的某些字节顺序,可能会调用'是唯一的,它的字节排序只有一种方式,所以我可以逐字节读取,看看它们是否匹配'呼叫'? (这样我就不必做完全或甚至部分的挫折)
想法?任何帮助将不胜感激
答案 0 :(得分:0)
不幸的是,没有。
x86_64代码中callq
最常见的操作码是e8
,但是无法区分e8
含义callq
与e8
在另一个上下文(例如,作为常量的一部分),而不完全反汇编二进制以找出每条指令的起始位置。请记住,x86使用可变长度指令,因此在指令开始的地方并不总是很明显。