gpt4 book ai didi

c - 不使用反汇编程序扫描 'call' 指令?

转载 作者:行者123 更新时间:2023-11-30 16:58:17 25 4
gpt4 key购买 nike

我正在为 Windows X64 中的文本编辑器编写一个调试器。我实现了断点和步过/步出。我陷入了单步执行的困境,因为我基本上需要获取当前行(通过 PDB 文件和 DbgHelp 获取的)和下一行的指令地址,看看这些地址之间是否存在“调用”指令,如果是这样,我们就介入,否则跳过。

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

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

最佳答案

不幸的是,没有。

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

关于c - 不使用反汇编程序扫描 'call' 指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com