朋友发来段代码,其中_asm mov eax,0x77d5058a此句出错(提示不能对其进行read)调试发现0x77d5058a中都是???而我在前面加入void* hd=*messagebox之后发现里面有代码了,运行也正常了所以想确认下是不是 
得到句柄的同时也对其中的数据有了访问权(是不是这样表述?)另外,如果在运行成功后注释掉void* hd=*messagebox,一段时间之内仍可运行成功,过一段时间之后_asm mov eax,0x77d5058a又会出错。还发现0x77d5058a的read权限貌似是在编译时分配的
因为在read 0x77d5058a失败时,将void* hd=*messagebox那句加入,然后编译(不运行),再注释掉再编译,这时运行就会成功

解决方案 »

  1.   

    硬编码通常 不会永远正常的
      

  2.   

    楼上老兄我想确认下是不是 
    得到句柄的同时也对其中的数据有了访问权(是不是这样表述?)
      

  3.   

    没人吗?问题太简单?还是表述不清?
      

  4.   

    这么大的地址,貌似位于堆栈中...所以,读不出是正常的(没使用到,还没有分配), 读得出也是正常的(堆栈使用过了,里面有无效数据), 能读到你期望的正确数据是一项博采事业。 继续努力