|
Подскажите как найти смещение - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
04.03.2016, 22:25
|
#1
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Фельдмаршал
|
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
|
Re: Подскажите как найти смещение
________________
Ни одно доброе дело не остается безнаказанным.
Программы:
PW: Флудобот, Девизхак, OutFocusBot, OutFocusBot ver 3 (freepvp), PWMultiHack ver 3, AutoRespawn.
JD: JDMultiHack, JDFlooder, JDBot.
Статьи: Отключаем UAC, Ищем базовый адрес Perfect World, "Патчер памяти" или "Пишем флайхак", "Патчер памяти 2" или "Пишем Джампхак", "Поиск инжектов" или "Наш код в чужом процессе"
|
|
|
04.03.2016, 23:53
|
#3
|
|
|
|
Разведчик
|
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Подскажите как найти смещение
|
Цитата: |
|
|
|
|
|
|
|
|
|
Динамический указатель на структуру игрока (если не ошибаюсь), но не на полет
Указатели на структуру памяти, в которой хранится значение текущей скорости полета. Именно их нужно править на значение максимальной скорости для изготовления спидстарта.
|
|
|
|
|
|
Смотри, без спидстарта мы имеем 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
|
|
|
|
Фельдмаршал
|
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
|
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. Это смещение и есть искомое число.
________________
Ни одно доброе дело не остается безнаказанным.
Программы:
PW: Флудобот, Девизхак, OutFocusBot, OutFocusBot ver 3 (freepvp), PWMultiHack ver 3, AutoRespawn.
JD: JDMultiHack, JDFlooder, JDBot.
Статьи: Отключаем UAC, Ищем базовый адрес Perfect World, "Патчер памяти" или "Пишем флайхак", "Патчер памяти 2" или "Пишем Джампхак", "Поиск инжектов" или "Наш код в чужом процессе"
|
|
|
05.03.2016, 00:40
|
#5
|
|
|
|
Разведчик
|
Регистрация: 04.03.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Re: Подскажите как найти смещение
|
|
|
05.03.2016, 00:49
|
#6
|
|
|
|
Фельдмаршал
|
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
|
Re: Подскажите как найти смещение
Я знаю как выглядит спидстарт... Как бы я не слишком уверен, но кажется я первым его и выложил.
По этим данным ты конечно можешь вычислить адрес... собственно и вычислять то тут нечего EDI - 8E4 в инженерном калькуляторе в хексе. Просто переключаешь в хекс и считаешь.
Другой вопрос как найти этот адрес для другого клиента - это тоже просто, берешь да и отсеиваешь значения одевая/снимая флайт. Осталось много - смотришь какие относятся к структуре персонажа.
________________
Ни одно доброе дело не остается безнаказанным.
Программы:
PW: Флудобот, Девизхак, OutFocusBot, OutFocusBot ver 3 (freepvp), PWMultiHack ver 3, AutoRespawn.
JD: JDMultiHack, JDFlooder, JDBot.
Статьи: Отключаем UAC, Ищем базовый адрес Perfect World, "Патчер памяти" или "Пишем флайхак", "Патчер памяти 2" или "Пишем Джампхак", "Поиск инжектов" или "Наш код в чужом процессе"
|
|
|
06.03.2016, 03:14
|
#7
|
|
|
|
Разведчик
|
Регистрация: 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.
Причина: Добавлено сообщение
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подскажите где можно найти...
|
mustankin |
Общение и обсуждение, архив Lineage 2 |
2 |
22.08.2011 21:37 |
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 11:25.
|
|