Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.05.2011, 14:26
Borec95 Borec95 вне форума
Прохожий
 
Регистрация: 05.05.2011
Сообщения: 12
Репутация: 10
Вопрос работа с процессами

Помогите пожалуйста новичку)
Нужно выбрать процесс из памяти по названию и изменить значение определенного адреса, приведите пожалуйста какой нибудь пример
Ответить с цитированием
  #2  
Старый 05.05.2011, 15:27
Rat Rat вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 391
Репутация: 6078
По умолчанию

Ищи в исходниках на сайте. Там есть аналог ArtMoney.
Ответить с цитированием
  #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;

Последний раз редактировалось Raskolnikov, 05.05.2011 в 15:36.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:39.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025