PDA

Просмотр полной версии : CatsGuard шифрование


Rzone
27.08.2016, 21:26
Хотел бы встроить в своего бота шифрацию для данной защиты.
Сервер на котором тестирую Interlude. В систем присутствует nProtect.des собран 2 января 2013 г. Знаю что CatsGuard использует RC4 шифрование, от сервера приходит GameGuardQuery с ключами размером 966+2
F9 03 00 00 41 53 87 7A 00 73 00 74 00 00 00 7A E1 03 00 72 41 6D 87 60 00 6E 00 65 00 00 00 EE 8D 07 02 D4 69 14 97 0F 00 00 00 01 00 00 00 04 EA 00 00 37 41 17 87 0E 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 06 BC 40 00 EA 00 00 00 11 9C C7 8F 85 58 00 FC 44 60 04 00 EA 00 00 37 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 00 CD E1 03 10 79 59 14 97 7D 1A 03 10 23 18 03 10 5E AC 02 10 CF 02 15 97 2A 16 01 10 FA 15 01 10 00 EA 00 00 3D 57 16 97 29 16 01 10 28 16 01 10 3F FC 01 10 00 41 17 87 F5 15 01 10 00 00 00 00 00 EA 00 00 F9 5E 17 87 5F 03 00 00 50 03 00 00 8F E9 00 00 7F 42 17 87 70 03 00 00 70 09 00 00 C5 F5 00 00 00 41 17 87 59 16 00 00 66 01 00 00 4C E3 00 00 66 57 17 87 0F 00 00 00 C5 1F 00 00 00 EA 00 00 00 41 17 87 0C 00 00 00 01 00 00 00 01 EA 00 00 00 41 17 87 0F 06 BC 40 00 00 00 00 00 BA 8B 40 00 41 17 87 38 00 00 00 00 00 00 00 00 EA 00 00 00 0D 17 E8 0F 6C 00 69 00 00 00 7A 0B E9 00 72 00 3B 17 E8 0F 6E 00 65 00 00 00 EE 67 ED 02 00 00 41 17 87 0F 00 00 01 00 00 00 04 00 EA 00 35 00 41 17 86 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 C0 7A 40 00 00 EA 00 00 40 20 57 EF 26 00 00 A7 96 03 00 00 00 EA 00 0E 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 4E B7 EB 10 4A B7 40 07 CB B8 01 10 49 B7 01 10 3C B7 EB 10 3D B7 40 07 C6 B8 01 10 48 B7 01 10 47 B7 EB 10 44 B7 40 07 B9 B8 01 10 3F B7 01 10 46 B7 EB 10 00 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 F9 1F 41 17 F4 0F 00 00 73 00 00 00 8C 03 EA 00 6D 03 41 17 EA 0C 00 00 7C 04 00 00 57 00 EA 00 71 02 41 17 B4 0F 00 00 1A 00 00 00 22 00 EA 00 27 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 81 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 CF 7A 40 00 00 00 00 00 40 8B 40 00 00 41 17 B2 0F 00 00 00 00 00 00 00 00 EA 00 00 4B 41 76 87 63 00 69 00 61 00 6E 00 00 EA 7A 0B 03 41 65 87 75 00 6F 00 6E 00 65 00 00 EA EE 67 07 43 17 87 0F 00 00 00 00 00 00 00 00 EA 01 00 00 41 05 87 0F 00 01 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 80 66 AA 00 00 00 41 17 47 5F 40 2C 01 00 00 FE 10 00 EA 00 00 00 41 12 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 00 00 00 00 00 00 EA 71 1C 02 51 17 87 0F 00 64 1C 02 10 55 1C 02 FA 00 00 00 41 40 9B 0D 10 37 1C 02 10 52 1C 02 FA 43 1C 02 51 21 9B 0D 10 3F 1C 02 10 38 1C 02 FA 40 1C 02 51 17 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 EE 98 0F 00 00 00 00 00 73 00 00 EA 8C 03 00 41 17 87 0F 00 6D 03 00 00 7C 04 00 EA DB 00 00 41 66 85 0F 00 33 00 00 00 1A 00 00 EA 22 00 00 41 30 87 0F 00 00 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 01 00 00 00 00 00 00 EA 00 00 00 41 17 87 0F 00 00 80 66 40 00 00 00 EA 00 C0 50 01 17 87 0F 00 12 00 00 00 01 00 00 EA 00 00 00 41 17
Уже долго ломаю голову, ключ у RC4 должен быть не более 32 байт, а тут 966... И, вероятнее всего, RC4 идет поверх стандартного xor шифрования.

Если кто знает как работает защита напишите пожалуйста, готов даже выдать небольшое вознаграждение за решение на яндекс, вебмани, или карту.

ScythLab
29.08.2016, 23:00
Откуда знания про RC4?
С чего ты решил, что это GameGuardQuery?
С чего ты решил, что в этом пакете ключи?
Если ты сумел расшифровать пакет (раз ты получил чистый трафик и тип пакета определил), то значит проблем с этой частью не должно быть.

Если в общем говорить про защиты, то скорей всего внутри des файла уже жестко вшит ключ шифрования, на сервере соответственно установлен такой же ключ. Т.е. клиент читает des, распаковывает/расшифровывает его и полученные данные использует для общения с сервером. Т.о. образом получается, что по сети ничего не передается, и клиенты от разных серверов не будут между собой совместимы.

Как узнать алгоритм и ключ? - Отладчик в руки и вперед.

Rzone
30.08.2016, 01:43
Откуда знания про RC4?
В исходниках серверной части CatsGuard есть инклюд с алгоритмом RC4.
В коде CatsGuard.java - packet = _crypt.rc4(packet);

С чего ты решил, что это GameGuardQuery? До этого пакета(включая и его) все шифруется стандартным xor. Опкод у пакета F9 - GameGuardQuery.

Пакет меняется в каждой сессии, после этого пакета меняется тип шифрования, соответственно я предположил, что в этом пакете приходят ключи.

Как узнать алгоритм и ключ? - Отладчик в руки и вперед.
Увы ассемблером не владею...

ScythLab
30.08.2016, 12:35
Опкод у пакета F9 - GameGuardQuery.Если это полный дамп пакета, то первые два байта (F9 03) - длина (т.е. 1017 байт вместе с заголовком, хотя ты выложил пакет меньшего размера), и значит это не GameGuardQuery, а KeyInit. Но в общем это не принципиально.

Пакет меняется в каждой сессии, после этого пакета меняется тип шифрования, соответственно я предположил, что в этом пакете приходят ключи.И все равно я склоняюсь к мысли, что основные данные содержатся в des-файле, возможно присутствует какая-нить мутация ключа по данным из пакетов LoginOk, PlayOk и KeyInit. Собственно, если у тебя есть серверная часть с кодом, то из него ты можешь попытаться найти места, где передаются ключи, но опять-таки думаю ты столкнешься с des-файлом и с необходимостью его расшифровки.


Увы ассемблером не владею...Тогда задача практически неразрешимая, только если чисто случайно наткнешься на верный алгоритм.

Rzone
30.08.2016, 15:45
Если это полный дамп пакета
Не полный, без первых байт размера. Дамп из пакетхака.

ScythLab можно спросить, а вы своего бота пишете ингейм? На инжекте длл?

ScythLab
31.08.2016, 13:40
ScythLab можно спросить, а вы своего бота пишете ингейм? На инжекте длл?Чуть предыстории: изначально он был OOG (повезло, что случайно выбранный сервер оказался вообще без защиты), потом примерно через полгода на этот сервак поставили защиту, начался ее анализ и параллельно проверялись другие сервера, выяснилось (внезапно и неожиданно :rofl:), что почти все сервера зашифрованы и что у каждой защиты свои фишки, и бороться с каждой из них крайне геморройно, поэтому бот переписали на IG-режим.
Для ИГ-ботов по сути два варианта: 1) инъекция dll (наш метод) 2) работа с памятью клиента извне.
(2) вариант более безопасен, но имхо больше грузит систему.

Rzone
31.08.2016, 14:44
ScythLab, написал вам в лс.

wimax
02.09.2016, 17:38
Rzone, Щас как раз занимаюсь данным вопросом могу дешифровать трафик а вот кодирывать пока не как)

ScythLab
02.09.2016, 21:16
wimax, RC4 же симметричный алгоритм, если смог расшифровать, значит и закодировать сможешь, или там еще какая-то хитрая контрольная сумма?
Вам с Rzone можно объединиться, и работать вместе веселее, и знаний полезных поднакопите.