首页
社区
课程
招聘
[求助]ReadProcessMemory 一次性读取 是不是有长度限制
发表于: 2009-1-12 10:14 6370

[求助]ReadProcessMemory 一次性读取 是不是有长度限制

2009-1-12 10:14
6370
在测试这个函数读取自己 Memory时,发现大于 43000 时会出错,

错误代码 299

只要比这个值小,就读取正常!

?ReadProcessMemory 的读取是不是有长度限制.一次不能大于43000

另外如果.我要直接用 BYTE 指向自己的内存一个字节的内容,应该怎么写?

BYTE bb= &*&*&*&*(地址这里写啥?)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为传给ReadProcessMemory()的指针后只有 43000字节是有效的,超过的都还没分配,所以出错了。ReadProceMemory()读取理论上是没啥限制的,只要要读的内存是有效的。

第二个问题不知道LZ是什么意思。
BYTE *bb=(BYTE *)OtherPointer;
  BYTE bb=*(BYTE *)OtherPointer;
2009-1-12 10:20
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CHAR *b=new CHAR[len];
        if (b==0)
        {
                AfxMessageBox("分配内存失败");
                return;
        }
        else
        {
                BOOL isret=        ReadProcessMemory(GetCurrentProcess(),(LPVOID)addr,b,len,0);
                if (isret)
                {
                        AfxMessageBox("ReadProcessMemory 成功 ");
                }
                else
                {
                        AfxMessageBox("ReadProcessMemory  失败 ");
                }
               
        }
        delete b;

内存确实是分配足了,读的内存也是有效的.但是 这个 len 好像真的可能有限制

就是不清楚 GetLastError() == 299  代表什么

上面的代码你试试,数字不能很大,(在有效内存里,比如从0x00400000 到 0x0050000 就不能)
2009-1-12 18:51
0
雪    币: 33
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我的那个问是指针直接指向自己的内容,

也就是

DWORD ad=0x00401234;
        DWORD va=*(DWORD *)ad;

我自己感觉不太好理解, 可能是先指向地址的指针.然后取内容....
2009-1-12 18:55
0
雪    币: 231
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看内存地址可不可读,可以换个目标程序测试
2009-1-12 23:51
0
雪    币: 219
活跃值: (58)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
没哦,
我一个程序,这么长都可以读
Data: Array[0..1000000] Of Byte;
2009-1-13 15:24
0
游客
登录 | 注册 方可回帖
返回
//