C++ 从记事本进程内存读取文本

C++ 从记事本进程内存读取文本,c++,windows,memory,notepad,C++,Windows,Memory,Notepad,我想读取记事本的全部内存,并将输出写入文本文件。 如果在记事本中键入内容,则在输出中找不到我键入的内容。 代码如下: HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID); char* ptr = 0; MEMORY_BASIC_INFORMATION info; while(ptr<=(char*)0x7FFF0000) { VirtualQueryEx(hProcess,(LP

我想读取记事本的全部内存,并将输出写入文本文件。 如果在记事本中键入内容,则在输出中找不到我键入的内容。 代码如下:

HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);
char* ptr = 0;
MEMORY_BASIC_INFORMATION info;
while(ptr<=(char*)0x7FFF0000)
{
    VirtualQueryEx(hProcess,(LPCVOID)ptr,&info,sizeof(info));
    if((info.AllocationProtect==0x04) || (info.AllocationProtect==0x10) || 
       (info.AllocationProtect==0x20) || (info.AllocationProtect==0x40) || 
       (info.AllocationProtect==0x80) || (info.AllocationProtect==0x02) || 
       (info.AllocationProtect==0x08))
    {
        int bytes_to_read = (int)info.RegionSize;
        char *buffer = NULL;
        buffer = (char *)malloc(info.RegionSize);
        ReadProcessMemory(hProcess,
                          info.BaseAddress,
                          &buffer,
                          bytes_to_read,
                          NULL);
        ofstream out;
        out.open("test.txt",ios_base::app);
        out << buffer;
        out.close();
    }
    ptr += info.RegionSize;
}
HANDLE hProcess=OpenProcess(PROCESS\u ALL\u ACCESS,FALSE,entry.th32ProcessID);
char*ptr=0;
内存\基本信息\信息;

虽然(PTR < P>)不能编写这样的缓冲区。C++假定它包含一个0终止字符串。 试一试

同时打开带有标志的文件

ios::binary | ios::out
AllocationProtect是位掩码。这在64位版本的Windows上不起作用。缓冲区不指向C字符串。解决这些问题似乎毫无意义。
ios::binary | ios::out