IPB

Добро пожаловать, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
> Strip Poker Professional Volume II, Artworx Software Company, Inc. / DOS / 1995
-=CHE@TER=-
Dec 24 2019, 18:38
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,217
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 287 раз(а)



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
Вот, в общем-то, и вся история. Возможно кто-то заинтересуется и захочет дожать игру.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 17th January 2020 - 19:50