首页
社区
课程
招聘
[求助]关于内存搜索
发表于: 2009-2-22 03:14 4396

[求助]关于内存搜索

2009-2-22 03:14
4396
用户空间是2G……
如果一个一个读很慢啊……
分块缓存读取2G的内存也很慢
有没有更高效的办法啊?
while(currentPos<=maxAddr)
        {
                VirtualQueryEx(ProcessHandle,(LPCVOID)currentPos,&mbm,sizeof(MEMORY_BASIC_INFORMATION));
                if(mbm.State==MEM_COMMIT)
                {
                                。。。。
                                }
                 }
我只读取提交的页面。。结果还是很慢。。。。。。
比如金山那些软件是怎么做到1下就搜索完的啊?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
2
那如果只搜可读写的页呢?
2009-2-22 03:47
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我试试……谢谢……
2009-2-22 04:05
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
VirtualQueryEx(DNFProcessHandle,(LPCVOID)currentPos,&mbm,sizeof(MEMORY_BASIC_INFORMATION));
                if( mbm.Protect==PAGE_READWRITE)//mbm.State==MEM_COMMIT &&

这个样子的话。。速度差不多。。。。。

还有啊
我是从40000-7FFFFFF搜索的……应该占不了哪么多吧?怎么确定边界啊 搜索的
2009-2-22 04:08
0
雪    币: 6
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
查询内存属性.好像给的就是一个区域吧.

我见过一个程序.他就是直接将一片内存读取到自己申请的空间中,

然后查询,
2009-2-22 05:32
0
雪    币: 297
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
6
以系统的内存分配的最小粒度为单位来check。
如果单纯check模块的话,用getmappedfilename来判断。
2009-2-22 09:42
0
雪    币: 297
活跃值: (10)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
而且有许多公用的模块的扫描可能是重复的,可以只扫描那些发生过写拷贝的地方。
2009-2-22 09:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢各位。。。
我现在扫描10000-5FFFFFFFF只要1-2秒了。。。
谢谢!
2009-2-22 16:55
0
雪    币: 431
活跃值: (442)
能力值: ( LV12,RANK:530 )
在线值:
发帖
回帖
粉丝
9
方法说说看?
2009-2-22 22:25
0
游客
登录 | 注册 方可回帖
返回
//