IPB

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

> Strip Poker Professional Volume II, Artworx Software Company, Inc. / DOS / 1995
-=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
Вот, в общем-то, и вся история. Возможно кто-то заинтересуется и захочет дожать игру.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов(1 - 1)
-=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);
}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

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

 



Упрощённая версия Сейчас: 15th June 2026 - 11:57