Хуки для NextGen - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 09.11.2013, 20:01   #1
Аватар для n3k0nation
Antihero

Автор темы (Топик Стартер) Хуки для NextGen

Кто-то там в курилке говорил, что пора выкладывать всякую хрень в честь дня рождения зоны? Так получайте

Небольшая хук-система для нектгена. Умеет хукать большинство хандлеров (от байпассов до бгомерзких админ-команд). Писалось некоторое время назад для себя, т.к. сейчас есть немного работы под этот эмуль.

Примеры использования:
Пример 1 (вырезка кода):
Свернуть ↑Развернуть ↓

Пример 2:
Свернуть ↑Развернуть ↓


В чем же соль спросите вы?
Все просто - к сожалению мы не можем модифицировать существующие байпассы (возьмем для конкретики именно их), хотя время от времени это становится нужным. Логика библиотеки проста: берем хранилище хандлеров, ищем фиелд с их хранением, берем его и изменяем хандлер на наш, чтобы запрос шел на наш обработчик. При этом сохраняется обратный вызов хукнутого хандлера, с помощью super-вызова (представлено выше).

Немного документации:
:
Свернуть ↑Развернуть ↓


Tick:
Подмену можно делать только всего подмножества команд, которые реализует стандартный обработчик. Так же не поддерживается расширение этого подмножества, для этого лучше создать отдельный обработчик.

Tick 2:
Для написания кастомных версий требуется соблюдать некоторые правила:
1. Хук-классы. Необходимо наличие глобальной переменной oldHandler с любыми флагами поля и любым типом, т.е. другими словами: делайте хоть private final Object oldHandler. Эта переменная не должна быть null, она должна указывать на стандартный обработчик, который заменяет хук.
2. Хранилище. Сканинг направлен только на TIntObjectHashMap типы фиелдов. Если тип фиелда, где хранятся обработчики другой - поле для инжекта не будет найдено, соответственно хук просто не будет работать.

Либа:
mediafire

Сорц либы (содержит проект eclipse со всеми зависимостями):
mediafire
*для людей, которые думают: "ололо, щас заберу ядро НГ" - хренушки, ибо я вырезал все классы, кроме зависимых.*


Послесловие:
Как я уже говорил, алгоритмика проверена и используется мной. Абстракцию и уровень библиотеки написал только что, для зиги, поэтому возможны ошибки

Послесловие 2:
Чует мое сердце, что такими темпами дойду до модернизации байткода на лету, ибо не хватает очень многих вещей в Script-API некстгена
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 19.04.2015 в 18:40.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

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

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

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


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 21:27. Часовой пояс GMT +3.

Вверх