Навигация
Наши каталоги
PSP Обои
Реклама
Вывоз мусора
Вывоз мусора контейнером. Любые объемы. Круглосуточно
СПЕЦТЕХСЕРВИС-ДВ.РФ
Облако тегов

Блок использует технологию Flash.
Для полноценного просмотра
требуется более новая версия
Adobe Flash Player.


Топ новостей
 

Ключи и теги - защита современных игр

автор: SeeD | 29-12-2009, 12:28 | Просмотров: 16017
Ключи и теги - защита современных игрАвтор текста: ErikPshat [ http://pspx.ru ]

Внимание! Оригинал данной статьи находится на форуме PSPx.ru - старейшем и самом крупном форуме, посвященном как игровой консоли Sony PSP, так и другим игровым приставкам настоящего и прошлого. Материал очень познавательный, рекомендуется всем интересующимся для детального изучения.



Как всем известно, новые игры, требующие повышенную прошивку, не желают запускаться, пока эта прошивка не будет установлена. От чего же это происходит? Какая-то защита, проверяющая версию прошивки по каким-то файлам во Flash0?

Такой вопрос возникал наверное у каждого. Но всё намного проще. Просто-напросто, запускающий файл PRX, он же EBOOT.BIN, находящийся в образе по адресу disk0:/PSP_GAME/SYSDIR/..., упакован в специфический запароленный архив (KL3E, KL4E или RLZ). Так вот, чтобы запустить игру, необходимо подставить пароль на архив, после чего файл извлекается в расшифрованном виде и приобретает рабочее состояние.

Получается такое дело, что предыдущая версия прошивки просто не имеет нового пароля. Вот поэтому новая игра не может запуститься. Чтобы запускались современные игры, а также предыдущие, необходимо, чтобы прошивка имела все предыдущие пароли, называемые по другому - ключи. Но если запускающий файл игры EBOOT.BIN будет находиться в образе уже в распакованном виде, то естественно нет необходимости подставлять ключ для распаковки.

Таким образом, SONY прибегает к такому, несколько примитивному методу борьбы с пиратством и в случае взлома пароля от существующей прошивки, выпускает новую версию, добавляя каждый раз ещё один новый ключ к играм. И конечно, ещё по ключу для распаковки файлов самой прошивки для PSP-1000 и 2000.

Правда некоторые производители игр добавляют к этому ещё свою защиту - на проверку версии прошивки. Но и эта защита была найдена и пофиксена. Как вы знаете, впервые mc707 обнаружил её и выпустил Eboot.bin.Patcher для понижения версии.

Каким же образом работает механизм распаковки зашифрованных файлов?

Чтобы подобрать необходимый ключ под определённый вид файла, сначала определяется "Тег" по заголовку этого файла, состоящий из 4 байт. А уже по этому тегу подставляется необходимый ключ, соответствующий именно этому тегу. В файлах EBOOT.BIN игр этот Тег записан по адресу 0хD0. Его можно увидеть через любой Хекс-редактор или даже через UMDGen:

Ключи и теги - защита современных игр


Определив номер тега, подставляется соответствующий ключ и файл распаковывается в память, приобретая рабочий вид.

Но где-же хранятся все эти теги и ключи к ним?


Вот тут и вступает в игру наш главный сегодняшний пациент - loadexec_0хg.prx.

Итак, я взял на исследование файл loadexec_01g.prx из Flash0 своей толстушки с прошивкой 5.00 М33-6.
Декриптовал его с помощью PRXdecrypter v2.3 и получил ELF-файл в заголовке, как и положено быть декриптованному файлу:

Ключи и теги - защита современных игр


Ну и решил сразу проверить на наличие уже известного Тега для прошивки 5.00 - F0 16 94 4C (0х4C9416F0), который можно посмотреть по таблице тегов. И да, тут же нашёл этот тег в этом файле. Вот он, выделен на скрине чёрным:

Ключи и теги - защита современных игр


Но посмотрев немного выше, я обнаружил аббревиатуру "~PSP". В голову пошли подозрительные мысли... Отсчитав выделением от начала этой аббревиатуры ~PSP до начала найденного тега, получилось смещение ровно D0:

Ключи и теги - защита современных игр


Что за чёрт, это ведь тег зашифрованного файла, который находится внутри декриптованного loadexec_01g.prx. Все сразу встало на места, когда я вспомнил про извлечение какого-то непонятного reboot.bin с помощью PRXdecrypter. Ну и PSARDumper так же извлекает этот reboot.bin, но происхождение его и использование было непонятным, так как в прошивках такого файла не встречается. Вот где собака зарыта!

Так как PRXdecrypter и PSARDumper почему-то из loadexec_01g(_02g).prx извлекают и декриптуют reboot.bin без заголовка ELF, что мне не понравилось, то мне было проще и быстрее извлечь этот файл целым вручную. Зная, что размер всего PRX-файла записывается по адресу 0х2С, я отсчитал от начала это количество байт и посмотрел размер этого файла:

Ключи и теги - защита современных игр


Итак, я прочитал размер с позиции 0х2С задом-наперёд как 0х00009480, отображаемый на скрине красным, выделил этот файл, скопировал в новый пустой документ и сохранил под названием reboot.bin. После декриптовки получил странный файл с названием в заголовке "KL3E", что наводило на мысль об одноимённом формате сжатия:

Ключи и теги - защита современных игр


То есть я получил декриптованный файл, но в сильно сжатом виде. Посмотрев в зашифрованном файле в позиции 0х28 (можно увидеть на предыдущем рисунке), где записан размер декриптованного файла 0х00009324 (37668 байт) и сверив с моим декриптованным, я удостоверился, что всё в точности сходится, а значит декриптовка произошла правильно.

Но, что и следовало ожидать, размер аналогичного файла, извлечённого с помощью PRXdecrypter или PSARDumper был больше в 2 с лишним раза - 76188 байт, из-за того, что файл помимо декриптовки, был ещё и разжат, в отличии от моего, просто декриптованного. Никакие попытки разжать этот, известный всем декрипторам формат "KL3E" не увенчались успехом. Поэтому мне пришлось убрать его в сторону и просто воспользоваться извлечённым и разжатым reboot.bin с помощью PRXdecrypter`а.

А что же дальше, и в чём вся соль?

А делалось всё это в попытке найти теги и ключи предположительно в этом файле - loadexec_01g(_02g).prx, который в себе ещё содержит reboot.bin. Итак, искомый файл у нас есть от прошивки 5.00. Теперь требуется найти в нём известные уже теги, характерные этой прошивке. Возьмём их из составленной таблицы, где я выписал известные в свободном доступе теги с ключами:

1) PSP-100x

F0 16 94 4C { 0x4C9416F0, keys500_0, 0x43 } /* 5.00 kernel (PRX's) */
{
0xEB, 0x1B, 0x53, 0x0B, 0x62, 0x49, 0x32, 0x58, 0x1F, 0x83, 0x0A, 0xF4, 0x99, 0x3D, 0x75, 0xD0
};

2) PSP-200x - должен иметь тег от 100x для общих файлов + тег от "_02g", характерный только Слимкам.

F0 17 94 4C { 0x4C9417F0, keys500_1, 0x43 } /* 5.00 kernel 2000 specific */
{
0xBA, 0xE2, 0xA3, 0x12, 0x07, 0xFF, 0x04, 0x1B, 0x64, 0xA5, 0x11, 0x85, 0xF7, 0x2F, 0x99, 0x5B
};

Ну и вот результат: в reboot.bin от PSP-100x был найден соответствующий тег:

Ключи и теги - защита современных игр


В reboot_02g.bin от PSP-200x было найдено 2 тега:

Ключи и теги - защита современных игр


Только вот где лежат сами ключи к этим тегам? Вероятно в mesg_led.prx. А это уже вопрос времени и дизасма smile.

И есть ещё 2 тега, сохранившихся со старых прошивок 3.30 и до сих пор не менявшихся.
Один из которых идёт на распаковку конкретно vshmain.prx.
Второй - на прочие не системные файлы прошивки.
И есть 3-ий - для запуска игр, требующих прошивку 5.00. Ключи-то нам известны, но вот где хранятся они - пока загадка.




Ключевые теги: прошивка, ключи, теги, ErikPshat
 
  • Вы не вошли или уже голосовали
  • Рейтинг: 14 (Голосов: 18)
 
Новинки
Комментарии