Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.11;
Скачать: CL | DM;

Вниз

!= Работа с памятью StarCraft:BW=!   Найти похожие ветки 

 
a[x]el   (2004-06-28 02:20) [0]

Я делаю утилиту для игры StarCraft: BroodWar и мне нужно
заменять текстовое значение в памяти, так как память динамическая, то
нужный мне адрес постоянно меняется. Получается, что мне каждый раз
нужно находить его заново. Утилита которую я делаю - это НЕ трейнер,но принцип
работы такой же.
Вот какой код я нашёл для записи значения в определённый адрес памяти :

Var WindowName : integer;
   ProcessId : integer;
   ThreadId : integer;
   buf,buf2 : PChar;
   HandleWindow : Integer;
   write : cardinal;
   Adress: integer;

Const WindowTitle = "Brood War";
    Address = $0449010C;
     PokeValue = $32;
     NumberOfBytes = 1;

implementation

{$R *.dfm}
//WRITE NEW VALUE
procedure TForm1.Button1Click(Sender: TObject);
begin
WindowName := FindWindow(nil,WindowTitle);
    If WindowName = 0 then
      begin
      MessageDlg("Игра должна быть запущена до трейнера. Запустите ее, потом трейнер", mtwarning,[mbOK],0);
      end;
 ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
 HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
 GetMem(buf,1);
 buf^ := Chr(PokeValue);
 WriteProcessMemory(HandleWindow,ptr(Adress),buf,NumberOfBytes,write);
 FreeMem(buf);
 CloseHandle(HandleWindow);
 Adress:= Adress;
end;


Как мне осуществить поиск и записать туде не одну букву а слово.
Получается мне надо с каждой буквой увеличивать адрес на 1?
Может кто-нибудь писал трейнер или знает как это делается?
Заранее благодарен!


 
Digitman ©   (2004-06-28 09:23) [1]


> так как память динамическая, то
> нужный мне адрес постоянно меняется


> Как мне осуществить поиск


см. ф-цию VirtualQueryEx()

циклический вызов этой ф-ции с нужными параметрами позволит перечислить регионы страниц памяти целевого процесса, хранящие данные

в каждой итерации цикла для каждого перечисляемого региона (регион описывается нач.вирт.адресом и размером, кратным 4к) выполняй скользящий поиск по АП региона искомой строки, адрес найденной строки и есть искомый адрес



Страницы: 1 вся ветка

Текущий архив: 2004.07.11;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
1-1087997302
XeLax
2004-06-23 17:28
2004.07.11
фокус и направление ввода


1-1087989906
Vampiros
2004-06-23 15:25
2004.07.11
Иконка к папке


3-1086886333
valex1
2004-06-10 20:52
2004.07.11
отладка хранимых процедур


14-1087812866
Nikolay M.
2004-06-21 14:14
2004.07.11
Таки женился :-)


14-1087991370
AlexG
2004-06-23 15:49
2004.07.11
Еще вопрос про сжатие...