Наверное, он имел ввиду, что указатель на экземпляр лежит по адресу 0x20000000 (или куда там грузится engine.dll) + фиксированное смещение.
А если ты собрался делать бота ничего не хукая, скажи, если не секрет, как баффы/скилллист/инвентарь получать собрался ?
Последний раз редактировалось Smwr, 22.07.2016 в 14:12.
Smwr, я сомневаюсь, что ты найдешь эту информацию в открытом доступе, базовое описание (и возможно единственное, которое я встречал) это Радар своими руками. Если и есть какая-то доп. информация, то возможно только в каких-нибудь подпольях или непосредственно от разрабов утилит для ла2.
Если бы я шел по этому пути, то поступил бы так:
- посмотрел бы список экспортируемых функций;
- нашел бы там наиболее интересные (типа GetNextNPC, GetNextParty и подобных);
- в IDA и под отладчиком посмотрел бы как они работают (по сути нужно узнать откуда они берут данные);
- можно по найденным названиям попробовать поискать инфу, вдруг где-то что-то проскользнет;
- дальше либо использовать эти функции, либо разобраться во внутренних структурах ла2 и читать данные напрямую.
Работа очень и очень геморройная и объемная.
К тому же есть ньюанс: если ты не перехватываешь события (OnXxx), то тебе придется периодически шерстить все списки, чтобы у тебя была актуальная информация.
Но зато есть существенный плюс: гварду определить такого бота будет нереально трудно, т.к. целостность данных ла2 никаких образом не нарушается.
ScythLab, я выяснил, что баффлистов целых 2 штуки, один лежит по статическому адресу(как мне показалось), но там нет времени окончания. А вот второй содержит все что мне нужно, но как его брать в рантайме не пойму. У меня есть подозрение, что его все таки содержит структура User, потому что он переразмещается при ее обновлении, но то ли там глубоко вложенный указатель, то ли слишком узкий диапазон выбрал для поиска..
Под отладчиком запускать пробовал один раз(под идой), клиент кританул, что там обысно юзают, олю с плагинами?
Еще бы под msvs запустить л2, а то отлаживать с логированием в файл гемор.
Что касается обновления через регулярное перечитывание - само собой разумеется, только хз, по скорости наверное даже хуже классического перехвата пакетов выйдет...
А что касается защиты - пишу для себя просто ради интереса, использовать на сервере, где защиты нет впринципе.
Smwr, из отладчиков Олька + плагины.
Для анализа очень помогает IDA (только нужен либо engine незашифрованный, либо самому расшифровать).
В либе например есть интересные методы User::AddBuff/HaveBuff/ClearBuff, в них видно, что в User хранится список (FArray) бафов (MagicSkillUniqueKey).
Я думаю там много всего интересного, главное не устать искать.
А по поводу плавающих адресов: каждая информация всегда от чего-то отталкивается, так что если ты сможешь найти всю цепочку, тогда у тебя будет 100% результат, по крайней мере внутри одних хроник.