Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Трейнер для игры

5.9K
11 мая 2006 года
Eksell
49 / / 16.11.2005
Всем привет! Я пытаюсь разобраться с так-называемом - трейнером для игры. Вообщем... какбы понятно... но не все. Короче вопрос такой :
Я использую такой код :
Код:
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)?
Подскажите пожалуйста. Очень нужно.
Спасибо заранее!
929
11 мая 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Eksell
Всем привет! Я пытаюсь разобраться с так-называемом - трейнером для игры. Вообщем... какбы понятно... но не все. Короче вопрос такой :
Я использую такой код :
Код:
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)?
Подскажите пожалуйста. Очень нужно.
Спасибо заранее!


Что-то я недогоняю... %-)
Ты имеешь в виду вещественные числа?
Как это адрес может быть вещественным числом???

2.0K
11 мая 2006 года
Dstr
158 / / 27.04.2006
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...
5.9K
11 мая 2006 года
Eksell
49 / / 16.11.2005
Цитата:
Originally posted by Dstr
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...


Я имел ввиду что значение адреса имеет тип - 4 байта с точкой... Я ошибся. Извиняюсь. Ну так как изменить такое значение?

5.9K
12 мая 2006 года
Eksell
49 / / 16.11.2005
Цитата:
Originally posted by Dstr
Я тоже недогоняю,как в адресе может быть точка?
Адрес это 16ичное число блин...Не путай значение с адресом...



"Спасибо всем большое за помощь"... Пиз*** как вы мне помогли! :(
Короче я уже сам разобрался...
Topic Close

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог