Анализ L2.ini (RSA 413) в KR-клиенте Lineage II и проблема с кодированием
Здравствуйте.
Я разработчик из Кореи и недавно начал анализ клиента Lineage II.
Занимаюсь этим около 3 дней, поэтому пока нахожусь на начальном уровне.
Хочу поделиться текущими результатами анализа L2.ini и попросить помощи.
1. Подтверждённая структура
(1) RSA (версия 413)
- L2.ini / User.ini используют RSA (версия 413)
- Декодирование выполняется через FL2RSACodec:
ecode - Основные функции:
- sub_15001000 → encode (ядро)
- sub_15001130 → decode (ядро)
(2) Различия NA и KR при декодировании
Обнаружено важное отличие:
NA-клиент
- Перед RSA-декодированием исключаются последние
- Структура:
[ RSA-данные ] + [ хвост 20 байт ]
KR-клиент
- Использует
- Хвост не отделяется
→ Вероятно, это связано с внутренним флагом или форматом.
(3) Анализ DES (311)
Рассматривалась возможность использования DES (311), но:
- GL2DESCodec используется только для .l2r
- L2.ini / User.ini его не используют
Вывод:
- И NA, и KR используют RSA (413)
- DES здесь не участвует
2. Текущая проблема
Декодирование
- KR L2.ini успешно расшифровывается в plaintext
Кодирование
NA
- Использование v413_encdec → работает корректно
KR
- Та же схема → клиент не запускается
Дополнительно:
- Оригинальный KR файл ≈ 5KB
- После перекодирования ≈ 6KB
→ Это указывает на проблему структуры
3. Анализ RSA-ключей
Используемый ключ:
- modulus: 75B4...
- private exponent: 30b4c2...
Это соответствует v413_encdec (поддерживает encode/decode)
Однако:
- Оригинал KR определяется как v413_original
- Судя по всему, поддерживает только decode
- Private exponent отсутствует
Вывод:
- Используемый ключ, вероятно, относится к NA или универсальному варианту
- KR может использовать:
- другой ключ
- или другой процесс кодирования
4. Возможные причины
(A) Отдельный RSA-ключ для KR
- Отличающийся modulus или exponent
(B) Отличия в процессе кодирования
Возможные различия:
- упаковка блоков (124 → 128)
- наличие сжатия (zlib?)
- схема padding
- обработка длины или хвоста
5. Текущий тупик
- FL2RSACodec::Encode выглядит как заглушка (не используется)
- Реальное кодирование происходит через sub_15001000
- Не удалось найти путь encode при сохранении INI
- Не найдено:
- encode-пути для KR
- private exponent для KR
- точного формата v413_original
6. Вопросы
Буду благодарен за любую информацию:
- Существует ли encode-путь для v413_original в KR-клиенте?
- Используется ли отдельный RSA-ключ для KR?
- Есть ли различия в обработке RSA-блоков между NA и KR?
- Как корректно воспроизвести формат v413_original?
7. Цель
Моя цель — добиться корректного запуска KR-клиента после изменения L2.ini, а также глубже понять внутреннюю структуру клиента (L2.bin, core.dll, engine.dll и другие модули).
8. Контакт
Буду рад общению и обмену опытом.
Telegram: @superduke1390r


