Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Подскажите как найти смещение

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 04.03.2016, 22:25   #1
 Разведчик
Аватар для foreal
 
foreal никому не известный тип
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Подскажите как найти смещение

Всем привет.
Я начинающий и очень не опытный, потому просьба не ругаться.
Не могу понять как узнать в exe максимальную скорость полета. Пробовал, как советуют в гугле, через Cheat Engine (Максимальная скорость полёта ищется элементарным отсеиванием (снимая/одевая леталку) по увеличилось на <скорость леталки> / уменьшилось на <...>. Оба значения типа float.) но безрезультатно. Ибо значений осталось слишком много. Около 200 000 и они убирались по 1.
Может быть есть ещё способ?
И ещё один вопрос по поводу спидстарта -
стандартное значение полета - mov ecx,[ebx+28]
1.5.1 версия - mov ecx,[edi-000008E4]
1.5.0 версия - mov ecx,[edi-00000834]
откуда берутся цифры 834 и 8E4?

Как высчитывается 834 и 8E4?
в олли вот так выглядит
MOV ECX,DWORD PTR DS:[EDI-8E4]
  Ответить с цитированием
Старый 04.03.2016, 23:18   #2
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Подскажите как найти смещение

Цитата:
стандартное значение полета - mov ecx,[ebx+28]

Динамический указатель на структуру игрока (если не ошибаюсь), но не на полет

Цитата:
1.5.1 версия - mov ecx,[edi-000008E4]
1.5.0 версия - mov ecx,[edi-00000834]

Указатели на структуру памяти, в которой хранится значение текущей скорости полета. Именно их нужно править на значение максимальной скорости для изготовления спидстарта.
  Ответить с цитированием
Старый 04.03.2016, 23:53   #3
 Разведчик
Аватар для foreal
 
foreal никому не известный тип
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Подскажите как найти смещение

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Динамический указатель на структуру игрока (если не ошибаюсь), но не на полет


Указатели на структуру памяти, в которой хранится значение текущей скорости полета. Именно их нужно править на значение максимальной скорости для изготовления спидстарта.

Смотри, без спидстарта мы имеем mov ecx,[ebx+28]
после смены байтов в 1.5.1 появляется mov ecx,[edi-000008E4] и в игре уже спидстарт, а в 1.5.0 версия - mov ecx,[edi-00000834]

вот сами байты
0000B2A1: 90 90 90 90 90 90 90 90 -> 8B 8F 1C F7 FF FF EB 2E
0000B2D4: 8B 4B 28 -> EB CB 90

Вопрос собственно в чем. Откуда берется значение 8E4 ? Как его рассчитать?
  Ответить с цитированием
Старый 05.03.2016, 00:08   #4
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Подскажите как найти смещение

Хочешь немного кода?
Код:
procedure P_SpeedStart(sender:TObject);
var
hProc,nbyte,buf_d:dword;
buf:byte;
buf2:word;
begin
  if Main.Form1.PersName.ItemIndex=-1 then
    messagebox(0,'Выберите имя персонажа','PWMultiHack',48)
  else
    begin
      hProc:=OpenProcess(PROCESS_ALL_ACCESS, False, akk[Form1.PersName.ItemIndex].PID);
      if hProc <> 0 then // условие проверки подключения к процессу
        try
          readprocessmemory(hProc,ptr(configfiles[ConfigTag].PW_SpeedStart_ADDRES_2),@buf,1,nbyte);
          if buf=configfiles[ConfigTag].SpeedStart_DEPATCH_CODE_2[0] then
            begin
              writeprocessmemory(hProc,ptr(configfiles[ConfigTag].PW_SpeedStart_ADDRES_1),@configfiles[ConfigTag].SpeedStart_PATCH_CODE_1,8,nbyte);
              writeprocessmemory(hProc,ptr(configfiles[ConfigTag].PW_SpeedStart_ADDRES_2),@configfiles[ConfigTag].SpeedStart_PATCH_CODE_2,3,nbyte);
              (sender as TBitCheckBox).checked:=true;
            end
          else
            begin
              writeprocessmemory(hProc,ptr(configfiles[ConfigTag].PW_SpeedStart_ADDRES_1),@configfiles[ConfigTag].SpeedStart_DEPATCH_CODE_1,8,nbyte);
              writeprocessmemory(hProc,ptr(configfiles[ConfigTag].PW_SpeedStart_ADDRES_2),@configfiles[ConfigTag].SpeedStart_DEPATCH_CODE_2,3,nbyte);
              (sender as TBitCheckBox).checked:=false;
            end;
        finally
          CloseHandle(hProc); // отсоединяемся от процесса
        end;
    end;
end;
Суть в чем. В этой точке кода у нас есть указатель edi и так оказалось, что максимальная скорость флайта хранится всего лишь в 2 адресных байтах от него. Если говорить проще - тебе нужно взять 2 адреса, максимальной скорости флайта и тот на который указывает регистр EDI. И вычесть одно из другого (опять же если память мне не изменяет, проверять на практике я сейчас не буду). Таким образом ты и узнаешь смещение к адресу, содержащему макс скорость флайта, относительно EDI. Это смещение и есть искомое число.
  Ответить с цитированием
Старый 05.03.2016, 00:40   #5
 Разведчик
Аватар для foreal
 
foreal никому не известный тип
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Подскажите как найти смещение

Цитата:
Сообщение от DinmaiteПосмотреть сообщение
Хочешь немного кода?

А как узнать адрес максимальной скорости флая?
или смотри, имея смещение (08E4) и адрес (b461) как мне вычесть и найти то что надо? по калькулятору перевести из хекса и посчитать? а потом снова перевести в хекс и найти это значение? (Извини если туплю, я не особо шарю, а гайдов как складывать и вычитать в хексе я не нашел)
И да, чтобы ничего не спутать я приложу 2 скрина уже со встроенным спидстартом [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 05.03.2016, 00:49   #6
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: Подскажите как найти смещение

Я знаю как выглядит спидстарт... Как бы я не слишком уверен, но кажется я первым его и выложил.
По этим данным ты конечно можешь вычислить адрес... собственно и вычислять то тут нечего EDI - 8E4 в инженерном калькуляторе в хексе. Просто переключаешь в хекс и считаешь.
Другой вопрос как найти этот адрес для другого клиента - это тоже просто, берешь да и отсеиваешь значения одевая/снимая флайт. Осталось много - смотришь какие относятся к структуре персонажа.
  Ответить с цитированием
Старый 06.03.2016, 03:14   #7
 Разведчик
Аватар для foreal
 
foreal никому не известный тип
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Подскажите как найти смещение

Проблема такая - не находит адресов. Имею 2 полета +9.0 и +6.0
С одетым полетом я ищу в cheat engine 9 (пару раз искал 8.8-9.2), потом одеваю другой полет и ищу 6 (5.8-6.2), но находит 0. В чем ошибка? тип стоит float

Подскажите, в чем ошибка?

Добавлено через 19 часов 40 минут
Подскажите, пожалуйста(
Пробовал на разных клиентах - не находит....

Последний раз редактировалось foreal; 06.03.2016 в 22:55. Причина: Добавлено сообщение
  Ответить с цитированием
Ответ


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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите где можно найти... mustankin Общение и обсуждение, архив Lineage 2 2 22.08.2011 21:37

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 11:25.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net