![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Short in English read here.
Раз уж я таки собрался и собрал практически все написанные когда-то за много лет исходные коды по XXX играм и закинул их на сайт, то не могу не упомянуть и об этой игре. Узнал я о ней когда рылся в Интернете в поисках ссылок на наш сайт - кто-то дал в комментариях ссылку на наш распаковщик формата *.GX. Собственно, ссылка, где можно скачать игру и почитать комментарии: Strip Poker Professional Volume II Читая комментарии я узнал о том, что с этой игрой есть проблема - она идёт на CD с ключом, который позволяет играть только с одним архивом оппонентов, а при использовании специальных ключей их можно открыть ещё 6 штук. Хех, даже с мужчинами есть - полная политкорректность. Мне стало интересно, что же там такое в 1995 году придумали, что до сих пор никто не взломал. Нужно отдать должное авторам - именно потому что они хорошо продумали защиту она так и осталась невзломанной. Я прошёл только первый уровень защиты, но дальше дело не сдвинулось. Расскажу подробности. На CD-диске есть большой файл VEND1278 - это зашифрованный .HFS (Hierarchical File System) образ диска - от MAC'ов, как я понял. UltraISO их поддерживает и может открыть. Собственно прокол (слабое место в методе защиты) шифрования этого диска был в том, что там обычный xor, который сбрасывается на (это важно!) границе сектора или какого другого блока. Короче, каждые 131072 байт (0x20000) ключ начинает генерироваться заново. Я не знаю алгоритма и начальных значений, зато изучив файл я увидел эту повторяющуюся особенность и прочитав первый блок использовал его как ключ для всех последующих. Потом я понял что что-то не так, потому что дублировался заголовок диска. Выяснилось, что там 16 первых секторов этих, но из них только первый и тот где FAT не пустые, а остальные нули. Таким образом прочитав второй сектор я получал чистый ключ, которым уже расшифровывал весь диск. Вот утилита, которая это делает: sppv2hfs.zip (с исходными кодами на C) Да, это было ровно два года назад - у меня всё никак времени не было об этом подробно написать, а сейчас очень в тему будет. Так вот после расшифровки образ VEND1278.HFS можно открыть в UltraISO и извлечь оттуда файлы команд TEAM?.VCL (даже дата будет правильная - 1995 год). Но, как я уже сказал, каждый файл команд зашифрован своим собственным ключом, потому что они покупались по отдельности. Ключи для установки и разблокировки состоят только из букв английского алфавита длинной в 14 символов - это два 32-ых ключа (два DWORD'а). Т.е. берёте первые 7 символов, скармливаете вот этой функции и получаете первый ключ, затем вторые - второй: CODE unsigned int strtokey(char *s) { unsigned int r, i; r = 0; for (i = 0; i < 7; i++) { r *= 26; r += (toupper(s[i]) - 'A'); } return(r); } Например CDKEY "kjfxqwwakdkxyb" превратится в пару 0xBEA9AC1A и 0x072CCD2D. Алгоритм, которым зашифрованы файлы - неизвестен. Комментаторы почему-то упёрлись в DES/AES, но судя по частично дизассемблированным исходным кодам (Decode Artworx SPCDV2 opponent unlock, см. файл "cli_crypto.c" -> cli_crypto_deobfuscate()) утилиты CLI.EXE которая должна регистрировать, алгоритм больше похож на IDEA или его модификацию. Впрочем, им конфигурационный файл зашифрован и я совсем не уверен, что оппоненты шифровали им же без изменений. Подобрать брутфорсом не получится, даже несмотря на то что все файлы-архивы должны начинаться одинаково (у .GX формата первые 54 байта - константа - см. TEAM0.VCL), потому что там, как я уже сказал, 64-х битное значение (два DWORD'а). Даже на современной и мощной машине на это уйдёт около 10 лет. И это, к тому же, без всякой гарантии, что файлы зашифрованы именно этим алгоритмом. А отладку игры затрудняет то, что она ставит какой-то свой драйвер для работы с CD-ROM, который под DOSBox не работает. Плюс, если там действительно IDEA, то тут ещё проблема в том, что он очень малораспространённый, так что даже исследований на предмет можно ли его как-то взломать или упростить взлом, не говоря уже о примерах программ это делающих, я не нашёл. Ещё добавлю по файлу SETUP\SYSINFO.DOS - там 7 записей. Первая неизвестно за что отвечает, а формат остальных 6-ти такой: DWORD filesize; // размер файла TEAM?.VCL для всех 6 групп DWORD unknown; // неизвестно WORD zero; // всегда ноль (флаг того что группа была разблокирована?) Утилиту UNLOCKV2.EXE можно пропустить и проверять ключи напрямую через CLI.EXE (ABCDEFGHIJKLMN - 14-ти значный ключ), но такой способ, по понятным причинам, ещё медленнее: CLI A ABCDEFGHIJKLMN Главное не забыть запустить две программы (это нужно сделать хотя бы один раз, предположим, что игра установлена в C:\SPCDV2): DPMS vendrun C:\SPCDV2\setup Вот, в общем-то, и вся история. Возможно кто-то заинтересуется и захочет дожать игру. |
![]() ![]() |
Упрощённая версия | Сейчас: 10th September 2024 - 03:41 |