Добро пожаловать, гость ( Вход | Регистрация )
![]() ![]() |
| -=CHE@TER=- |
Dec 24 2019, 18:38
Сообщение
#1
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,440 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 329 раз(а) |
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 Вот, в общем-то, и вся история. Возможно кто-то заинтересуется и захочет дожать игру. |
| -=CHE@TER=- |
May 14 2026, 21:24
Сообщение
#2
|
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,440 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 329 раз(а) |
Strip Poker Professional Volume II teams extractor (with C source codes)
QUOTE © DOSGAME.AT 2026 https://www.dosgame.at/ If you enjoy what we do, please donate us a coffee at: https://buymeacoffee.com/dosgameat/e/537090 © CTPAX-X Team 2017,2026 http://www.CTPAX-X.org/ © Pienats 2016 https://github.com/Pienats/sp_decode Огромное спасибо DOSGAME.AT за ключи и смещения и Pienats за алгоритм расшифровки! Как я предполагаю работает всё это следующим образом: расшифровывает "VEND1278" и берёт оттуда смещения и размер файлов команд (что делала моя утилита "sppv2hfs" выше), но расшифровка файлов с "VEND1278" идёт с оригинала. Т.е. с _не_ расшифрованного образа диска. Я бы до такого не догадался. Pienats ещё в 2016 декомпилировал алгоритм шифрования и сделал это правильно. Но догадаться до такой хитрой схемы дешифровки было непросто - это смог сделать только DOSGAME.AT. Ещё одна сложность была в том, что там не 64 битный ключ (как я думал), а 32 битный, просто два раза дублируется. Для тех, кто хочет посмотреть именно игру DOSGAME.AT сделал установщик, правда он рассчитан на x64 систему: Strip Poker Professional Volume II (Artworx) - Team Unlocker by DOSGAME.AT А ещё каждый может поддержать автора и его работу на BuyMeACoffee.com (см. ссылку выше). 10 лет спустя будем считать и эту тему закрытой. На всякий случай оставлю здесь алгоритм преобразования числа в код, на случай, если кто-то захочет для игры полноценный keygen сделать (простое дублирование кодов (CLI.EXE A FRKQELVFRKQELV для первой команды, например) у меня не сработало, хотя, возможно, потому что я из под DOSBox проверял, а там драйвер для расшифровки, вероятно, не работает правильно). CODE char *keytostr(char *s, unsigned int r) { unsigned int i; if (s) { i = 7; while (i--) { s[i] = 'A' + (r % 26); r /= 26; } s[7] = 0; } return(s); } |
![]() ![]() |
| Упрощённая версия | Сейчас: 15th June 2026 - 10:53 |