Var WindowName : integer;
ProcessId : integer;
ThreadId : integer;
buf : PChar;
HandleWindow : Integer;
write : cardinal;
Const WindowTitle = 'prog test';
Address = $41D090;
PokeValue = $32;
NumberOfBytes = 1;
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg('The game must be running in the background.
Run it now, and then try again.', 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;
Трейнер для игры
Я использую такой код :
Код:
Все работает, Но только с целыми типами. А что делать если значение адреса имеет точку (например зн. - 666.00)?
Подскажите пожалуйста. Очень нужно.
Спасибо заранее!
Цитата:
Originally posted by Eksell
Всем привет! Я пытаюсь разобраться с так-называемом - трейнером для игры. Вообщем... какбы понятно... но не все. Короче вопрос такой :
Я использую такой код :
Все работает, Но только с целыми типами. А что делать если значение адреса имеет точку (например зн. - 666.00)?
Подскажите пожалуйста. Очень нужно.
Спасибо заранее!
Всем привет! Я пытаюсь разобраться с так-называемом - трейнером для игры. Вообщем... какбы понятно... но не все. Короче вопрос такой :
Я использую такой код :
Код:
Var WindowName : integer;
ProcessId : integer;
ThreadId : integer;
buf : PChar;
HandleWindow : Integer;
write : cardinal;
Const WindowTitle = 'prog test';
Address = $41D090;
PokeValue = $32;
NumberOfBytes = 1;
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg('The game must be running in the background.
Run it now, and then try again.', 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;
ProcessId : integer;
ThreadId : integer;
buf : PChar;
HandleWindow : Integer;
write : cardinal;
Const WindowTitle = 'prog test';
Address = $41D090;
PokeValue = $32;
NumberOfBytes = 1;
begin
WindowName := FindWindow(nil,WindowTitle);
If WindowName = 0 then
begin
MessageDlg('The game must be running in the background.
Run it now, and then try again.', 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;
Все работает, Но только с целыми типами. А что делать если значение адреса имеет точку (например зн. - 666.00)?
Подскажите пожалуйста. Очень нужно.
Спасибо заранее!
Что-то я недогоняю... %-)
Ты имеешь в виду вещественные числа?
Как это адрес может быть вещественным числом???
Адрес это 16ичное число блин...Не путай значение с адресом...
Цитата:
Originally posted by Dstr
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...
Я имел ввиду что значение адреса имеет тип - 4 байта с точкой... Я ошибся. Извиняюсь. Ну так как изменить такое значение?
Цитата:
Originally posted by Dstr
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...
"Спасибо всем большое за помощь"... Пиз*** как вы мне помогли! :(
Короче я уже сам разобрался...
Topic Close