2

我尝试了指针和引用(&)但是当我尝试获取信息时(我只是从内存中读取)计算机“哔”并且程序终止。将指针分配给字节(char *)时没有问题。但是当我读到那台电脑时发出哔哔声。(x=*p;)

Windows XP,1GB + 128 MB 内存。我不知道我的 eproom + eeproms。

我可以使用 System() 函数来使用操作系统命令来访问内存吗?你认识任何人吗?

4

3 回答 3

19

你不能。现代操作系统使用不允许这样做的虚拟模式和内存保护。要访问所有物理 RAM,您很可能需要为现有操作系统编写自己的操作系统或内核驱动程序。

于 2012-07-13T09:04:49.067 回答
4

你不能这样做,因为你没有权限这样做,当你运行你的代码时,它会创建一个进程来运行你的程序,并且每个进程只能访问它的地址空间,访问其他进程的地址空间会造成陷阱os,你的内核暂停工作并检查你的堆栈和进程,然后它发现你做了一个非特权任务,然后它杀死你的进程

于 2012-07-13T09:07:33.863 回答
0

这应该对我有帮助:

typedef struct _MEMORY_BASIC_INFORMATION {
PVOID BaseAddress;
PVOID AllocationBase;
DWORD AllocationProtect;
DWORD RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;

和这个:

VirtualQueryEx(
HANDLE hProcess,
LPCVOID lpAddress,
PMEMORY_BASIC_INFORMATION lpBuffer,
DWORD dwLength
);

至少在我的操作系统中感谢 Bo Persson 和 Jerry Coffin 或 Mysticial

于 2012-07-13T09:50:16.213 回答