我们尝试着去修改const常量的值,C++程序代码如下:
#include <iostream> using namespace std; int main() { const int AI = 10; _asm { lea ebx,AI mov dword ptr[ebx],30H } cout<<AI<<endl; return 0; }
我们单步跟踪如下图:
根据AI所在地址修改其值如下图:
但是结果输出为:
为什么会出现这样的结果呢,接着我们来看看反汇编的代码:
从上图我们知道了为什么输出的值还是没有改变,这是因为由于在编译时AI的值已知,并且是const常量,所以生成的代码并不是引用AI,而且直接引用了立即数0Ah。