loadexec_01g(_02g).prx - секреты прошивки.
Как всем известно, новые игры, требующие повышенную прошивку, не желают запускаться, пока эта прошивка не будет установлена.
От чего же это происходит? Какая-то защита, проверяющая версию прошивки по каким-то файлам во 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_01g.prx из Flash0 своей толстушки с прошивкой 5.00 М33-6. Декриптовал его с помощью PRXdecrypter v2.3 и получил ELF-файл в заголовке, как и положено быть декриптованному файлу: Скрин Скрин Отсчитав выделением от начала этой аббревиатуры ~PSP до начала найденного тега, получилось смещение ровно D0: Скрин Вот где собака зарыта! Так как PRXdecrypter и PSARDumper почему-то из loadexec_01g(_02g).prx извлекают и декриптуют reboot.bin без заголовка ELF, что мне не понравилось, то мне было проще и быстрее извлечь этот файл целым вручную. Зная, что размер всего PRX-файла записывается по адресу 0х2С, то я отсчитал от начала это количество байт и посмотрел размер этого файла: Скрин После декриптовки получил странный файл с названием в заголовке "KL3E", что наводило на мысль об одноимённом формате сжатия: Скрин Посмотрев в зашифрованном файле в позиции 0х28 (можно увидеть на предыдущем рисунке), где записан размер декриптованного файла 0х00009324 (37668 байт) и сверив с моим декриптованным, я удостоверился, что всё в точности сходится, а значит декриптовка произошла правильно. Но, что и следовало ожидать, размер аналогичного файла, извлечённого с помощью PRXdecrypter или PSARDumper был больше в 2 с лишним раза - 76188 байт, из-за того, что файл помимо декриптовки, был ещё и расжат, в отличии от моего, просто декриптованного. Никакие попытки расжать этот, известный всем декрипторам формат "KL3E" не увенчались успехом. Поэтому мне пришлось убрать его в сторону и просто воспользоваться извлечённым и расжатым reboot.bin с помощью PRXdecrypter-а. А что-же дальше, в чём соль? А делалось всё это, в попытке найти теги и ключи, предположительно в этом файле - loadexec_01g(_02g).prx, который в себе ещё содержит reboot.bin. Итак, искомый файл у нас есть от прошивки 5.00. Теперь требуется найти в нём известные уже теги, характерные этой прошивке. Возьмём их из составленной таблицы, где я выписал известные в свободном доступе теги с ключами:
В reboot.bin от PSP-100x был найден соответствующий тег: Скрин Скрин И есть ещё 2 тега, сохранившихся со старых прошивок 3.30 и до сих пор не менявшихся. Один из которых идёт на распаковку конкретно vshmain.prx. Второй - на прочие не системные файлы прошивки. И есть 3-ий - для запуска игр, требующих прошивку 5.00. Ключи-то нам известны, но вот где хранятся они - пока загадка. Искомые теги |
Уря! Уря! Уря!
Я нашёл все теги и ключи к ним в декриптованном файле от прошивки 5.00, как и предполагалось, они находятся в mesg_led.prx. Это так элементарно, просто слов нет, лежат как на ладони, только бери прям напрямую без всяких шаманств и переписывай тупо на листочек. Их там очень-очень много и все они верны, я проверил!!! Даже намного больше, чем есть на самом деле ))). В общем разобрался:
|
а будешь добавлять их в таблицу?
|
doubledeath, вероятно добавлю. Но там их 66 штук для Фатки и 84 штуки для Слимки. Для 3000 - 101 штука. Все переписывать - с ума сойдёшь =)
Самая проблема с reboot.bin, в котором лежат всего 3 ключа для Фат, Слим и Брайт. Вот эти главные ключи к системным файлам я пока не представляю где искать, т.к. в mesg_led.prx их нет. |
Текущее время: 06:05. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.