64位Win8下访问虚拟内存出现违规访问的问题
2013-10-12 10:50
218 查看
通过Hook API的方式捕获程序异常时发现一个问题,代码片段如下:
if (addr)
{
...
VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
}
问题描述:以上代码在32位/64位XP、Win7及32位Win8上可以正常工作,但在64位Win8上执行时,WriteProcessMemory会出现违规访问的错误。看起来是访问权限的问题。
解决方法:将VirtualProtect换成VirtualProtectEX并设置权限为PAGE_EXECUTE_READWRITE即可。
如下:
if (addr)
{
...
VirtualProtectEx(GetCurrentProcess(), addr, size, PAGE_EXECUTE_READWRITE, &dwOldFlag);
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtectEx(GetCurrentProcess(), addr, size, dwOldFlag, &dwTempFlag);
}
Hook API的方法请参考:http://blog.csdn.net/bopzhou/article/details/6708572
if (addr)
{
...
VirtualProtect(addr, size, PAGE_READWRITE, &dwOldFlag);
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtect(addr, size, dwOldFlag, &dwTempFlag);
}
问题描述:以上代码在32位/64位XP、Win7及32位Win8上可以正常工作,但在64位Win8上执行时,WriteProcessMemory会出现违规访问的错误。看起来是访问权限的问题。
解决方法:将VirtualProtect换成VirtualProtectEX并设置权限为PAGE_EXECUTE_READWRITE即可。
如下:
if (addr)
{
...
VirtualProtectEx(GetCurrentProcess(), addr, size, PAGE_EXECUTE_READWRITE, &dwOldFlag);
WriteProcessMemory(GetCurrentProcess(), addr, code, size, NULL);
VirtualProtectEx(GetCurrentProcess(), addr, size, dwOldFlag, &dwTempFlag);
}
Hook API的方法请参考:http://blog.csdn.net/bopzhou/article/details/6708572
相关文章推荐
- Wampserver在win8下出现403禁止访问问题的解决方法
- 64位win8不能访问IIS主页问题解决
- win8_64位安装Oracle11gR2_64位安装plsql出现的问题
- 解决Wampserver在win8下出现403禁止访问问题
- 解决Wampserver在win8下出现403禁止访问问题
- 出现问题:BOOTSTRP导致访问侵犯在IMSCUT.DL的解决办法
- 解决 crt访问linux或者ssh访问出现 Permission denied 问题
- IE11打开的网站,视频不见了。部分win7+win8电脑出现此问题
- Samba 源码编译安装及Win7/Win8访问问题解决
- sql查询时,出现 "在纤程模式下不支持异类查询和 OLEDB 访问接口的使用"问题
- 解决Windows 2008 Server 64位,.NET访问Oracle问题
- windows 7安装问题 无法定位到系统分区 + 展开文件时出现网络问题(错误代码:0x80070005)+ win8安装 找不到分区
- J2ME 访问服务器 数据头部出现乱码问题
- 解决Win7&Win8 64位下Source Insight提示未完整安装的问题
- Win8应用程序出现问题的解决方法
- Win环境下本地运行hadoop1版本出现访问权限问题 Failed to set permissions of path
- Project Server 2007 创建用户之后,出现“拒绝访问”问题解决方案
- 解决iis出现 Server Application Error 问题(无法访问aps页)
- 访问V$LOCK视图oracle11g出现性能问题
- 解决Flex/Flash跨域访问出现的安全沙箱问题