Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Исходник [Релиз] NosTale PacketLogger — Пакетлоггер с TCP-сервером и сурсом

Sloppy
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
706
Реакции
18
Разрабы старых логгеров под NosTale окончательно забили на свои поделки: у одних фильтры не сохраняются, у других хуки криво работают. Решил выкатить адекватную замену, которая не просто логает пакеты, но и позволяет цепляться к ним через TCP.

Основной упор сделан на стабильность и возможность использовать логгер как мост для своих ботов. Написано всё это дело на QT с использованием PolyHook 2.0.

Главные фичи:
  1. Полноценный логинг входящих и исходящих пакетов.
  2. TCP-сервер: можно подключить любой софт (Python, AutoIt, C#) и манипулировать пакетами в реальном времени.
  3. Сохранение фильтров (наконец-то не надо настраивать всё заново при каждом перезапуске).
  4. Подсветка и маркировка выбранных пакетов.
  5. Просмотр полного пакета при наведении мыши.

Техническая часть и TCP Feature
Это киллер-фича для разработчиков. Логгер выступает в роли прокси. Вы можете подключить сколько угодно клиентов к локальному серверу (IP:Порт отображаются в заголовке окна).

Формат обмена данными максимально простой (Space splitted):
Код:
Expand Collapse Copy
type counter_header data
Где type: 0 — входящий (receive), 1 — исходящий (send).

Код:
Expand Collapse Copy
packet = receiveFromPacketLogger();
splitted = split(packet, ' ');

type = splitted[0];
header = splitted[1];

if type == 0 then "RECEIVE PACKET"
if type == 1 then "SEND PACKET"

Python Snippet для получения порта:
Если лень руками чекать заголовки, можно вытащить порт логгера через psutil:
Код:
Expand Collapse Copy
from typing import List
from psutil import process_iter, AccessDenied, Process

def get_nostale_packet_logger_ports() -> List[int]:
    processes = []
    for process in process_iter():
        try:
            if "NostaleClientX.exe" in process.name():
                processes.append(process)
        except AccessDenied:
            pass
           
    ports = []
    for process in processes:
        for connection in process.connections():
            if connection.laddr and connection.laddr.ip == "127.0.0.1":
                ports.append(connection.laddr.port)
    return ports

Как запустить:
  1. Закидываем содержимое папки PacketLogger в корневую папку с игрой.
  2. Инжектим PacketLogger.dll любым удобным инжектором.
  3. Если сыпет ошибками — обновите Redist'ы (VCRedist).

Сурсы и репозиторий:
Проект лежит на GitLab -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Собрано на QT. Помогать с настройкой окружения для компила не буду — если есть руки, разберетесь сами, база там стандартная.

FAjddab.png

LXTIbab.png


Сурс идеально подходит под допил своего функционала или просто как учебник по работе с PolyHook в MMORPG. Глянем, как античит отреагирует на такие манипуляции в долгосроке.

Жду ваших идей по реализации фильтрации через TCP.
 
Назад
Сверху Снизу