首页
社区
课程
招聘
[求助]virtualProtect 问题
发表于: 2013-6-18 15:47 6958

[求助]virtualProtect 问题

2013-6-18 15:47
6958
DWORD *pmem;
pmem=(DWORD*)::VirtualAlloc(NULL,0x3000,0X1000,0x40);
::VirtualProtect(pmem+41,0x40,PAGE_NOACCESS,&oldp);

为何 访问pmem[0]也会出错呢??

我想通过设定内存访问方式,当程序读一个地方的地址就出错 这就能找出程序在什么地方访问了这块内容。

[课程]FART 脱壳王!加量不加价!FART作者讲授!

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
VirutalProtect当中的需要改变属性的地址和字节数虽然是可以任意写,但是实际的属性修改保护是以页为单位的。
所以实际是保护了1024K的位置。你要改的地址所在的页的所有属性都会改变。

pmem[0] 和pmem+41在同一页,因此也会改变。。
soga就是这样

哈哈20KX到手了吗??

dwSize [in]
The size of the region whose access protection attributes are to be changed, in bytes. The region of affected pages includes all pages containing one or more bytes in the range from the lpAddress parameter to (lpAddress+dwSize). This means that a 2-byte range straddling a page boundary causes the protection attributes of both pages to be changed.
2013-6-18 15:57
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
1. 硬编码应该避免。。。

2. VirtualAlloc 第一个参数。。。起始地址 怎么能是 0???

虚拟地址 0 开始的 64Kb(好象是)是不允许 读 和 写 的。是系统机制 要问为什么请看《Windows 核心编程》
2013-6-18 16:04
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=IamHuskar;1189607]VirutalProtect当中的需要改变属性的地址和字节数虽然是可以任意写,但是实际的属性修改保护是以页为单位的。
所以实际是保护了1024K的位置。你要改的地址所在的页的所有属性都会改变。

pmem[0] 和pmem+41在同一页,因此也会改变。。
soga就是这样

哈哈20KX...[/QUOTE]

楼主的结帖率:14.29%,你的20kx我看悬
2013-6-18 16:07
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
5

我相信楼主,否则,下次还有谁给回答??
哼哼
2013-6-18 16:08
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
6
第一个参数为NULL表示申请到的地址由系统分配返回,如果你想得到你想要的地址可以不填NULL,但是如果那个地址被人家用了,就申请失败。。
2013-6-18 16:09
0
雪    币: 22
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
恩 受教~
2013-6-18 16:23
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
经过我的激将法,楼主勉强结贴了
2013-6-18 20:20
0
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
9
你是想分一半的KX么
2013-6-18 22:59
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
DWORD *pmem;这里pmem是跟pmem[0]还是有区别的,楼主看看pmem[0]的内容是什么?如果像这里,是个0值的话,是会访问违规的。
上传的附件:
2013-6-18 23:35
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=IamHuskar;1189607]VirutalProtect当中的需要改变属性的地址和字节数虽然是可以任意写,但是实际的属性修改保护是以页为单位的。
所以实际是保护了1024K的位置。你要改的地址所在的页的所有属性都会改变。

pmem[0] 和pmem+41在同一页,因此也会改变。。
soga就是这样

哈哈20KX...[/QUOTE]

实际上真正的原因不是这样的吧。跟要保护的大小没有关系,而是他要修改内存属性的代码,访问了一个不能访问的内存地址而引起访问违规。个人愚见
2013-6-18 23:53
0
游客
登录 | 注册 方可回帖
返回
//