我想提取记事本进程的完整进程内存并将其写入文本文件。问题是我在文本文件中找不到我在记事本中输入的内容。例如,如果我在记事本中键入“test123”,我无法在程序创建的文本文件中找到该字符串。这是代码:
{$APPTYPE CONSOLE}
uses
Windows,
TLHelp32,
SysUtils;
var
Snap, err: dword;
sysinfo: TSystemInfo;
Process: TPROCESSENTRY32;
Handle: THandle;
Mbi: TMemoryBasicInformation;
Addr, BytesRead: dword;
Buf: PChar;
f: TextFile;
begin
GetSystemInfo(sysinfo);
Handle := OpenProcess(PROCESS_ALL_ACCESS, false, 2928);
if Handle <> 0 then
begin
writeln(Process.szExeFile);
Addr := dword(sysinfo.lpMinimumApplicationAddress);
while (Addr < $80000000) do
begin
if VirtualQueryEx(Handle, Ptr(Addr), Mbi, SizeOf(Mbi)) = 0 then
begin
err := GetLastError;
inc(Addr, sysinfo.dwPageSize);
continue;
end;
Buf := AllocMem(Mbi.RegionSize);
ReadProcessMemory(Handle, Mbi.BaseAddress, Buf, Mbi.RegionSize, BytesRead);
AssignFile(f, 'Test.txt');
Append(f);
WriteLn(f, Buf);
CloseFile(f);
FreeMem(Buf);
if Addr + Mbi.RegionSize < Addr then
break;
Addr := Addr + Mbi.RegionSize;
end;
CloseHandle(Handle)
end;
Readln;
end.