プロセスメモリ全体をスキャンしようとしていますが、成功しません...私がやっていることは、テストのためにメモ帳を使用しているので、そこに%Bと書き、HEX でのこの値は次のとおりです: 25(%) と 42 (B)。したがって、コードは次のとおりです。
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;
var 'Buff' は TBytes です (TBytes について読んで、バイトの配列と同じだと思います)。そこで、バイトを 16 進数に変換し、それぞれ 25 と 42 の値を検索しています。コードは次のようになります。
if (IntToHex(Buff[i], 1) = '25') and (IntToHex(Buff[i+2], 1) = '42') then
16 進値の間に 00 があるためです。したがって、「+2」を追加する必要があります。この値のメモリ全体をスキャンするにはどうすればよいですか??