скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Пропатчить процесс



Оформил: DeeCo

{....}

 var
   WindowName: Integer;
   ProcessId: Integer;
   ThreadId: Integer;
   buf: PChar;
   HandleWindow: Integer;
   Write: Cardinal;

    {....}

 const
   WindowTitle = 'a program name';
   Address = $A662D6;
   PokeValue = $4A;
   NumberOfBytes = 2;

    {....}


 procedure TForm1.Button1Click(Sender: TObject);
 begin
   WindowName := FindWindow(nil, WindowTitle);

   if WindowName = 0 then
   begin
     MessageDlg('Program not running.', mtWarning, [mbOK], 0);
   end;

   ThreadId := GetWindowThreadProcessId(WindowName, @ProcessId);
   HandleWindow := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);

   GetMem(buf, 1);
   buf^ := Chr(PokeValue);
   WriteProcessMemory(HandleWindow, ptr(Address), buf, NumberOfBytes, Write);
   FreeMem(buf);
   CloseHandle(HandleWindow);
 end;





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook