2

不确定这是一个愚蠢的问题还是这里涉及一个聪明的把戏。

我想将 x86_32 'into' (int 溢出异常)指令用于我正在编写的调试器。我看到这条指令从来没有真正成为主流,并在 x86_64 中被弃用。我想在运行时在我的程序中为 x86_64 执行 int 溢出检查(我正在动态二进制检测框架之上构建此功能)。

  1. 有没有办法通过使用一些技巧来使用这个指令对 x86_64 进行边界检查?

  2. 我没有重新编译程序的自由,因此排除了所有与编译器相关的标志。我有基础设施来生成运行时代码。

  3. 我不想在软件中实现这个边界检查(我有自己的理由)并且想利用硬件特性。

注意:我知道新的 Intel MPX 指令可用于边界检查,但这些指令尚未普及。

有什么想法吗 ?

4

1 回答 1

1

INTO在 x64 中已弃用。
这是一件好事,更多的指令(​​例如所有 x87)应该被弃用,但遗憾的是没有。

从第一个 8086 开始,甚至在整数溢出之前已经在标志寄存器中处理。

使用OF标志对有符号值进行边界检查,使用标志对无符号值进行边界检查C

有了access violation系统内置的所有检查,就不再需要INTO了。你最好的选择是编写一个异常处理程序。
也许会问一个问题:“如何在 x86_64 程序集中捕获异常”?

于 2013-10-16T02:36:16.277 回答