在没有反汇编程序的情况下扫描 'call' 指令?

Scanning for 'call' instruction without a disassembler?

我正在为 Windows X64 中的文本编辑器编写调试器。我实现了断点和 step-over/step-out。我卡在了 step-in 因为我基本上需要在当前行(我通过 PDB 文件和 DbgHelp 获得)和下一行获取指令的地址,看看是否有 'call' 指令那些地址,如果是这样我们就介入,否则就跳过。

我想知道是否有办法通过 DbgHelp/PDB 获取此信息(无需编写或使用反汇编程序)?或者可能利用指令的某些字节顺序,也许 'call' 是唯一的,并且只有一种字节排序方式,所以我可以逐字节读取并查看它们是否与 'call' 匹配? (那样我就不必完全或什至部分反对)

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

很遗憾,没有。

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