加密与解密(第三版)第16章,外壳代码存在Bug

外壳第一段中在解压第二段数据前在分配内存函数Virtualalloc最后一个参数当前为PAGE_READWRITE在windows2003和windows2008上都会出问题,程序一跳到第二段后久会出现内存地址非法访问,程序无法执行,在windows其他版本系统上不会出现,可能是2003和2008服务器系统版本安全性高些吧。
上面那参数应改为PAGE_EXECUTE_READWRITE,让分配的内存具有读,写,执行权限
改后测试就没有问题了。

  • 标 题:答复
  • 作 者:hying
  • 时 间:2010-03-26 09:52:15

谢谢您的发现,这确实可以算是个错误。
当初我刚开始写的时候还是用的98,没有DEP保护,所以没有认真考虑这个。
再次感谢您的认真发现。