Красиво реализовано. Я по-другому делал. Ключ(32бита) разбивался на 4 части. Два числа уменьшались на единицу каждые 8 байт и два счетчика увеличивались, когда первые числа были равны 0.
(K=33, биты от 1-32, т.е. Первый бит = K-32, последний К-1)
Код:
1 Число (уменьшается каждые 8 байт):
Bit [k - 13]
Bit [k - 14]
Bit [k - 15]
Bit [k - 16]
Bit [k - 1]
Bit [k - 2]
Bit [k - 3]
Bit [k - 4]
Bit [k - 5]
Bit [k - 6]
Bit [k - 7]
Bit [k - 8]
2 Число (уменьшается каждые 8 байт):
Bit [k - 31]
Bit [k - 32]
Bit [k - 17]
Bit [k - 18]
Bit [k - 19]
Bit [k - 20]
Bit [k - 21]
Bit [k - 22]
Bit [k - 23]
3 Число (увеличивается, когда первое равно 0):
Bit [k - 32]
Bit [k - 17]
Bit [k - 18]
Bit [k - 19]
Bit [k - 20]
Bit [k - 21]
Bit [k - 22]
Bit [k - 23]
Bit [k - 24]
Bit [k - 9]
Bit [k - 10]
Bit [k - 11]
Bit [k - 12]
4 Число (увеличивается когда 2-ое равно 0):
Bit [k - 25]
Bit [k - 26]
Bit [k - 27]
Bit [k - 28]
Bit [k - 29]
Bit [k - 30]
Bit [k - 31]
В С++ можно реализовать с помощью битовых массивов.
два счетчика увеличивались, когда первые числа были равны 0
я уже плохо помню, но по моему это будет правильно работать только первые несколько десятков или даже сотен килобайт, но потом начнёт появляться расхождение
__________________
Я здесь практически не появляюсь!, Skype - ikskor
В первую очередь если у вас в папке с Л2 лежит fuckConsole, обязательно сотрите её.
Ну а дальше делам вот что:
1) В папку "system" кидаем бота ( eL2Walker2.09b.zip )
2) В реестре прописываем инжект бота:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
Затем двойной клик на AppInit_DLLs и вписываем в строку: l2walker.dll
3)Чтобы ваш клиент молча не выбрасывало идем в: Мой компьютер\Свойства\Дополнительно\Отчет об ошибках (Включить отчет об ошибках (Всех программ))
4) Запускаем клиент через Апдейтер и заходим в игру
5) Как только чар загрузится, в Диспетчере задач (ctrl+alt+del) завершаем процесс shieldConsole.exe и где то через 1 мин будет отчет об ошибке L2.exe, который мы НЕ ЗАКРЫВАЕМ, а просто убераем в дальний угол (чтоб глаза не мазолил )
я уже плохо помню, но по моему это будет правильно работать только первые несколько десятков или даже сотен килобайт, но потом начнёт появляться расхождение
ага, так и было. Ток позже, на 1 мБ. Там был критический момент когда оба счетчика в переполнение уходят (т.е. обнуляться должны). Я кстати сравнивал ради интереса после того как ты выложил свою функцию - расхождений нету.
Мне кажется в следующей версии, когда они усложнили шифрацию с динамическим ключом, они там скорее всего принцип оставили тот же: т.е. несколько чисел-счётчиков с произвольными битами.