Форум: "Основная";
Текущий архив: 2004.07.11;
Скачать: [xml.tar.bz2];
Вниз!= Работа с памятью 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.03 c