Тема: Warden
Показать сообщение отдельно
Старый 23.03.2010, 06:37   #24
abdula123
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
abdula123 На верном пути
По умолчанию

Цитата:
Сообщение от zhenya Посмотреть сообщение
Данный пакет был для 3.3.2 и оно даже работает нормально..
странно. значит пакет менялся.
в логах за последние 10 дней - только те значения, что я написал.

Цитата:
Сообщение от zhenya Посмотреть сообщение
другое дело в том, что в опенсорсе разбирать один модуль фи (есть все ключи и читерам подделывать ответы не составит труда... тем более все эти ключи и проверки будут как на ладони).
после вычитывания ключа из памяти - проверки и так "как на ладони" - до окончания сессии.


Цитата:
Сообщение от zhenya Посмотреть сообщение
идеи есть как собирать seed, и новые ключи шифрации для каждого модуля ?
вот мой кусок кода, который делает это для одного сида.
адаптировать его под цикл - не проблема.

Код:
wmod = WardenModule("2A7BD368FF3D0795B4DE7F823F487175.raw")
wmod.load()
wmod.prepare()
wmod.init()

# state - текущее крипто-состояние
wmod.live_rc4_data = state

print " -> GenerateRC4Keys"
wmod.GenerateRC4Keys("")

# теперь шифруем пакет SEED и скармливаем вардену
# если ключи принялись нормально - он его обработает и выдаст HASH

s_pkt = decode("""
05 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx
xx
""")

pkt_crypted = server_crypt.crypt(s_pkt)

print " -> PacketHandler"
print wmod.PacketHandler(pkt_crypted)

resp_crypted = wmod.send_queue.pop(0)
resp_decrypted = client_crypt.crypt(resp_crypted)

print "decrypted responce"
print dump2hexstr(resp_decrypted)

# после SEED->HASH  грузим новые ключи
rc4_states = cast(wmod.rc4_keys_ptr, POINTER(c_ubyte))

print "unload"
wmod.UnloadModule()
Цитата:
Код:
byte seed[16]; // taken from 0x05 packet
byte[] rc4_seed_client = ModuleSpecificHash(&seed); // this value than stored at module+4
byte[] rc4_seed_server = ModuleSpecificHash(&seed); // so we have double processed seed here
clientRC4Crypt_Init(rc4_seed_client);
serverRC4Crypt_Init(rc4_seed_server);
byte[] seedHash = SHA1(rc4_seed_client); // used in 0x04 packet
но вот близы точно не забьют если выложить варден работающий с большим числом модулей.. будет открыт путь для написания ботов и прочего..
п.с. хотелось бы посмотреть на модуль для macos клиента..
а на деле кому оно надо те уже написали простейшую поддержку..
варден работающий с любым модулем уже давно есть - для War3 / Diablo2.

учитывая, что варден там абсолютно тот-же самый, адаптировать под вов - дело недолгое и нехитрое.

есть основания предполагать, что:
база модулей набирается за несколько месяцев игры.
их не очень много (всяко меньше 3-4 сотен) и они тоже в ротации.
ну время от времени свежие добавляются.

чтобы окончательно проверить это предположение - нужно эти самые несколько месяцев заходить в игру каждые несколько часов и автоматом подлавливать свежие модули. их сыпется по 3-4 штуки в день. за последние 10 дней повторов не было.


оно надо коммерческим ботописателям - у некоторых из них действительно давно всё налажено.
ну или ботописателям-любителям, если кому делать нехер.
abdula123 вне форума   Ответить с цитированием