Сначала нужно разработать алгоритм, по которому ты будешь шифровать. Приведу самый простой вариант, для примера:
1) Алгоритм: берем файл, который будет шифровать, в нашем случае это будет armorgrp.dat, шифруем его с помощью AES, ключ генерируем случайно, и записываем потом в конец этого же файла. Для шифрования можно использовать, например, Python.
2) Пишем dll (C+
, нам нужно загрузиться ДО того, как игра начнет парсить .dat файлы, способов много, самый простой - добавить себя в импорты какому нибудь l2.exe. Dll должна получить управление в момент чтения .dat файлов, и прозрачно для клиента расшифровать их, для этого нужно перехватить любым подходящим способом (сплайсинг, захват IAT), функции, которыми клиент читает датки (сейчас не могу сказать их названия, ищутся за 5 минут в иде).
3) При чтении клиентом определенного куска файла, мы получаем управление, выкусываем ключ из конца файла, и снимаем им AES. Для С++ можно использовать
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками
Вход или
Регистрация
, самое удобное, по ощущениям.
Естественно, это самый простой вариант, для примера, который можно дальше развивать. В данном случае, для кулхацкеров достаточно отреверсить длл, увидеть, что ключ в конце файла, и можно распаковывать. Более сложный и универсальный - просто сдампить данные из клиента, после того, как он прочитает .dat файл, от этого в общем виде защититься нельзя, можно только усложнить этот процесс.
Ну а дальше уже можно совершенствовать, например, закриптовать dll каким нибудь vmprot'ом, заюзать ассиметричную криптографию, ключ собирать по кускам, а не держать его в явном виде, и т п