不确定这是一个愚蠢的问题还是这里涉及一个聪明的伎俩。
我想对我正在编写的调试器使用x86_32'into'(int溢出异常)指令。我看到这条指令从未真正成为主流,并在x86_64中被弃用。我想在运行时在程序中执行int溢出检查(我在动态二进制检测框架之上构建此功能)x86_64。
有没有办法使用这个指令通过一些技巧来对x86_64进行边界检查?
我没有自由重新编译程序,因此排除了所有与编译器相关的标志。我有基础设施来生成运行时代码。
我不想在软件中实现这个边界检查(我有自己的理由),并希望利用hw功能。
注意:我知道可以用于边界检查的新的Intel MPX指令,但这些指令尚未普及。
有什么想法吗?
答案 0 :(得分:1)
INTO
已弃用
这是一个好的东西,更多的指令(例如所有的x87)应该被弃用但遗憾的是没有。
自从Flags寄存器中处理了第一个8086 and even before整数溢出以来。
使用OF
标志检查签名值的边界,Bounds使用C
标志检查无符号值。
系统内置了所有access violation
检查,不再需要INTO
。你最好的选择是写一个异常处理程序
也许问一个问题:“如何在x86_64程序集中捕获异常”?