Показать сообщение отдельно
  #3  
Старый 05.05.2011, 15:31
Raskolnikov Raskolnikov вне форума
Прохожий
 
Регистрация: 20.04.2011
Адрес: Киров
Сообщения: 35
Версия Delphi: 7 Enterprise
Репутация: 148
По умолчанию

Сначала добавляем в uses модуль TlHelp32.


Код:
//Запись в процесс Project2.exe по адресу 00abcdef 4-байтовое целое число 42
const
  ExeName = 'Project2.exe'; //Имя исполняемого файла процесса
var
  hSnap, hProc: THandle;
  ProcEtr: TProcessEntry32;
  ProcAddr: Cardinal;
  Data: Integer;
  dummy: Cardinal;
  FindProc: Boolean;
begin
  hSnap:= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  ProcEtr.dwSize:= SizeOf(ProcEtr);
  Process32First(hSnap, ProcEtr);

  //Ищем процесс с заданным именем
  repeat
    FindProc:= ProcEtr.szExeFile = ExeName;
    if FindProc then
      Break;
  until not Process32Next(hSnap, ProcEtr);
  if not FindProc then
     Exit; //Не нашли процесс

  ProcAddr:= $00abcdef; //Адрес в процессе
  hProc:= OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False,
    ProcEtr.th32ProcessID);

  Data:= 42; //Данные, которые мы пишем в память
  WriteProcessMemory(hProc, Ptr(ProcAddr), @Data, 4, dummy);
  CloseHandle(hProc)


  ProcAddr:= $00abcdef; //Адрес в процессе 
  hProc:= OpenProcess(PROCESS_VM_OPERATION or PROCESS_VM_READ or PROCESS_VM_WRITE, False,
    ProcEtr.th32ProcessID);

  Data:= 42; //Данные, которые мы пишем в память
  WriteProcessMemory(hProc, Ptr(ProcAddr), @Data, 4, dummy);
  CloseHandle(hProc);
end;
Ответить с цитированием