能力值:
( LV2,RANK:10 )
|
-
-
2 楼
因为传给ReadProcessMemory()的指针后只有 43000字节是有效的,超过的都还没分配,所以出错了。ReadProceMemory()读取理论上是没啥限制的,只要要读的内存是有效的。
第二个问题不知道LZ是什么意思。
BYTE *bb=(BYTE *)OtherPointer;
BYTE bb=*(BYTE *)OtherPointer;
|
能力值:
( 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 就不能)
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我的那个问是指针直接指向自己的内容,
也就是
DWORD ad=0x00401234;
DWORD va=*(DWORD *)ad;
我自己感觉不太好理解, 可能是先指向地址的指针.然后取内容....
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
看内存地址可不可读,可以换个目标程序测试
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
没哦,
我一个程序,这么长都可以读
Data: Array[0..1000000] Of Byte;
|
|
|