3
我正在嘗試掃描整個進程的內存,但沒有成功......我在做的是:對於測試我使用記事本,所以我寫在那裏%B和這個HEX值爲:25(%)和42(B)。因此,代碼爲:使用ReadProcessMemory掃描整個進程內存
while (VirtualQueryEx(PIDHandle, Pointer(MemStart), MemInfo, SizeOf(MemInfo)) <> 0) do
begin
if ((MemInfo.State = MEM_COMMIT) and (not (MemInfo.Protect = PAGE_GUARD)
or (MemInfo.Protect = PAGE_NOACCESS)) and (MemInfo.Protect = PAGE_READWRITE)) then
begin
SetLength(Buff, MemInfo.RegionSize);
if (ReadProcessMemory(PIDHandle, MemInfo.BaseAddress, Buff,
MemInfo.RegionSize, ReceivedBytes)) then
begin
for I := 0 to SizeOf(Buff) do
begin
if (IntToHex(Buff[i], 1) = '25') and (IntToHex(Buff[i+2], 1) = '42') then
Form1.Memo1.Lines.Append(IntToHex(Buff[i], 1));
end;
end;
end;
MemStart:= MemStart + MemInfo.RegionSize;
end;
CloseHandle(PIDHandle);
end;
的變種「的Buff」是TB的(我讀到Tbytes的,並認爲這是相同的字節數組)。所以我將字節轉換爲十六進制,並分別搜索值25和42。代碼如下:
if (IntToHex(Buff[i], 1) = '25') and (IntToHex(Buff[i+2], 1) = '42') then
因爲在十六進制值之間有00。所以我需要添加'+2'。我如何掃描整個內存的這個值?
謝謝你的回答和關注。但對於我來說,仍然是一個謎,爲什麼程序無法找到記事本內存中的值。如果我進行ReadProcess,如: ReadProcessMemory(PIDHandle,指針($ 00367ED0),淺黃色,MemInfo.RegionSize,ReceivedBytes),用正確的地址指針,它找到。但是掃描整個內存,找不到任何東西。對不起,不便... – HwTrap
我的最新更新有幫助嗎? –
是的......謝謝! – HwTrap