Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент > Копаем клиент

Важная информация

Копаем клиент Копаем клиент

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.03.2010, 05:42   #1
zhenya
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
zhenya Скоро придёт к известности
По умолчанию

Данный пакет был для 3.3.2 и оно даже работает нормально.. другое дело в том, что в опенсорсе разбирать один модуль фи (есть все ключи и читерам подделывать ответы не составит труда... тем более все эти ключи и проверки будут как на ладони). идеи есть как собирать seed, и новые ключи шифрации для каждого модуля ?

Код:
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 клиента..
а на деле кому оно надо те уже написали простейшую поддержку..

Последний раз редактировалось zhenya; 23.03.2010 в 05:58.
zhenya вне форума   Ответить с цитированием
Старый 23.03.2010, 06:37   #2
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 вне форума   Ответить с цитированием
Старый 23.03.2010, 12:15   #3
zhenya
Пользователь
 
Регистрация: 12.03.2010
Сообщений: 85
Сказал(а) спасибо: 5
Поблагодарили 42 раз(а) в 17 сообщениях
zhenya Скоро придёт к известности
По умолчанию

В d2gs используется только 1 модуль заданный в d2warden.ini также как и ключ.
Код:
;Please don't modify following values!
;І»ТЄРЮёДПВГжµДЦµЈЎ
MOD=3ea42f5ac80f0d2deb35d99b4e9a780b.mod
MOD_RC4_Key=4f340a327dc8b4b8a7d1c15cf73c0e78
У близов есть ротация, у нас её нету. => Написав "Антиварден" для одного сервера, оно будет работать везде. А если держать в открытом все данные ключи шифрация для каждого модуля.. это не составит труда уже под бли**** написать бота или прогу подделывающую варден проверки.
Если вы поможете мне найти для всех модулей Seed, new client key, new server key.
0х3 пакет если отличается для различных модулей то необходимо еще и это.
также 0х4 пакет необходимо hash который возращает клиент. На текущий момент у TOM_RUS чуть больше 210 различных модулей с RC4 ключами к ним. Все равно как я понимаю в git не будут включены модули т.к. они подписаны RSA близарда.

имхо это откроет путь для начинающих читописателей, ботописателей.

п.с. если интересно #rmdc@rusnet

Последний раз редактировалось zhenya; 23.03.2010 в 12:19.
zhenya вне форума   Ответить с цитированием
Старый 23.03.2010, 13:49   #4
abdula123
Пользователь
 
Регистрация: 22.03.2010
Сообщений: 41
Сказал(а) спасибо: 7
Поблагодарили 25 раз(а) в 15 сообщениях
abdula123 На верном пути
По умолчанию

Цитата:
Сообщение от zhenya Посмотреть сообщение
В d2gs используется только 1 модуль заданный в d2warden.ini также как и ключ.
Код:
;Please don't modify following values!
;І»ТЄРЮёДПВГжµДЦµЈЎ
MOD=3ea42f5ac80f0d2deb35d99b4e9a780b.mod
MOD_RC4_Key=4f340a327dc8b4b8a7d1c15cf73c0e78
речь идет о немного других серверах
BNLS сервера точно поддерживают загрузку разных модулей. причем на лету.

http://bnls.ghostbot.net:9367/

Цитата:
У близов есть ротация, у нас её нету. => Написав "Антиварден" для одного сервера, оно будет работать везде. А если держать в открытом все данные ключи шифрация для каждого модуля.. это не составит труда уже под бли**** написать бота или прогу подделывающую варден проверки.
Если вы поможете мне найти для всех модулей Seed, new client key, new server key.
с ключами ой. самих ключей я никогда не вижу - т.к. забираю у модулей готовые крипто-состояния RC4 (т.е. BOX, I, J - и клиентский и серверный). и подсовываю им тоже крипто-состояния. для шифрования этого хватает. и вардену, и мне.

нагенерить пар (модуль, состояние) для нескольких сидов - могу (хз сколько они будут генериться, но не дольше одной в секунду). завтра, скорее всего.



кстати, если кто в криптографии силен - можно ли из начального состояния RC4 (с I и J равными 0) вычислить ключ за небольшое время?

что-то мне подсказывает, что нет - т.к. неизвестно J, которое было на момент окончания заполнения BOX. а атаковать RC4 по всем правилам - слишком долгое удовольствие.

впрочем, вопрос чисто теоретический, и без начального ключа всё работает нормально.


Цитата:
0х3 пакет если отличается для различных модулей то необходимо еще и это.
за последние 10 дней изменений не было. раньше - не следил


Цитата:
также 0х4 пакет необходимо hash который возращает клиент. На текущий момент у TOM_RUS чуть больше 210 различных модулей с RC4 ключами к ним. Все равно как я понимаю в git не будут включены модули т.к. они подписаны RSA близарда.
ну у меня пока только 38 модулей.
я, кстати, их храню уже расшифроваными и распаковаными - меньше мороки при загрузке

Последний раз редактировалось abdula123; 23.03.2010 в 13:52.
abdula123 вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
sven (26.03.2010)
Старый 25.05.2010, 12:08   #5
Nomad
Новичок
 
Регистрация: 25.05.2010
Сообщений: 11
Сказал(а) спасибо: 1
Поблагодарили 14 раз(а) в 5 сообщениях
Nomad На верном пути
По умолчанию

Заранее извиняюсь за нубский вопрос - последние год-полтора я отошел от копаний во внутренностях ВоВ и остановился на версии 2.3.3, потому могу не знать современных реалий.
Вопрос таков - есть ли возможность варденом следить за целостностью трафика? Проверки модулей, памяти, драйверов и пр. банально не спасают от редактирования трафика на шлюзе, потому логично было бы сверять контрольную сумму исходящих данных, но это реально сделать лишь в собственном модуле (через задницу и с внутренними хуками, но можно). Собственный модуль же требует взлома 1024-битного ключа RSA, либо модификации клиента.
О ключе, кстати, отдельный разговор. Может таки есть смысл набрать нужное количество единомышленников, написать OpenCL/CUDA модули и подобрать его? Ключ не менялся со времен д2, за эти годы можно было уже и на CPU посчитать
Nomad вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 15:18. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot