
29.06.2012, 18:33
|
Прохожий
|
|
Регистрация: 29.06.2012
Сообщения: 2
Репутация: 10
|
|
Код:
var
ProcessID, Addr, Value, BytesRead: DWord;
ProcessHandle: THandle;
Mbi: TMemoryBasicInformation;
i: Cardinal;
Buf: PChar;
begin
ProcessHandle := FindWindow(nil, PChar('Заголовок окна процесса'));
GetWindowThreadProcessId(ProcessHandle, @ProcessID);
Value := 12321;
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_ALL_ACCESS or PROCESS_VM_OPERATION, false, ProcessID);
if ProcessHandle <> 0 then
try
Addr := 0;
while VirtualQueryEx(ProcessHandle, Pointer(Addr), Mbi, SizeOf(Mbi)) <> 0 do
begin
if (Mbi.State = MEM_COMMIT) and not ((Mbi.Protect and PAGE_GUARD) = PAGE_GUARD) then
begin
GetMem(Buf, Mbi.RegionSize);
try
if ReadProcessMemory(ProcessHandle, Mbi.BaseAddress, Buf, Mbi.RegionSize, BytesRead) then
begin
for i := 0 to BytesRead - SizeOf(Value) do
begin
if PDWord(@Buf[i])^ = Value then Memo1.Lines.Add('$' + IntToHex(Integer(Cardinal(Mbi.BaseAddress) + i), 8));
end;
end
else
finally
FreeMem(Buf);
end;
end;
Addr := Addr + Mbi.RegionSize;
end;
finally
CloseHandle(ProcessHandle);
end;
end;
Админ: Пользуемся тегами для оформления кода!
Но это не то, что нужно
Последний раз редактировалось Admin, 30.06.2012 в 11:14.
|