PrxEncrypter Mod v1.0.0.1 - Full Range Demo Game Sign
PrxEncrypter Mod
Подписываем приложения оригинальными заголовками
Как вы знаете, оригинальная версия Энкриптера содержит в себе только 3 заголовка для подписи приложений, диапазон размеров которых бывает явно недостаточен для более тонкого шифрования исполняемых файлов. Поэтому я собрал все имеющиеся в наличии заголовки демо-версий игр и портировал их в классический PrxEncrypter.
Что это за мод?
Это версия шифровальщика, собранного на основании предыдущей подготовительной темы, включающего 103 заголовка демонстрационных версий игр, способного подписывать приложения для запуска с карты памяти на официальных прошивках.
Способен подписывать исполняемые файлы DATA.PSP в диапазоне ~ 368 kb - 8 Mb
Для подписи автоматически подбирается самый маленький из 103-ёх по размеру заголовок
Используются "теги" категории "MG Demo" (MemoryStick Game Demo) - 0x0C000000 и 0xADF305F0
Можно подписывать только DATA.PSP для использования в контейнере EBOOT.PBP
Но никак не EBOOT.BIN для способа NP.ISO => EBOOT.PBP, т.к. для этого контейнера требуются теги другого диапазона "EG" - 0xD916xxF0
Для этого случая уже имеется прекрасный инструмент - SEBOOT (Sign EBOOT.BIN)
Подписываемые приложения не должны иметь Kernel-модулей, только User-режим.
Для запуска приложений, использующих kernel-режим, требуется внедрение rebootex модуля, что пока лично мной не изучено. Если кто-то имеет информацию по данному вопросу, то можете поделиться ей. Например неплохо было бы заставить работать PSPident на официальных прошивках...
В папку "PrxEncrypter Mod" скопируйте для подписываения файлы EBOOT.PBP, DATA.PSP или EBOOT.BIN. Так же, чтобы сразу собралась подписанная программа со всеми ресурсами, можете в папку добавить файлы ICON0.PNG ICON1.PNG PIC0.PNG PIC1.PNG SND0.AT3 DATA.PSAR.
Запустите программу "PrxEncrypterMod.exe" для подписи.
Заберите создавшуюся папку "SIGNED GAME" с подписанным EBOOT.PBP и положите её на карту памяти в папку ms0(ef0):/PSP/GAME/
Папку можете переименовать по названию вашей игры или программы.
Changelog PrxEncrypterMod:
Добавлено 100 заголовков от демоверсий для подписи, к 3-ём ранее имеющимся. Итого 103 заголовка.
Добавлена проверка на ~PSP и ELF
Заменён механизм сжатия в GZIP библиотекой zlib на консольный 7-Zip.
Исправлен баг, когда файл всегда подписывался бОльшим заголовком, чем он сам, несмотря на используемое сжатие. То есть, даже если файл сжимался намного меньшим размером и свободно помещался в меньший заголовок, то заголовок всё равно брался бОльший, чем несжатый файл.
Автоматизирован процесс подписи.
Таблица включённых в PrxEncrypter заголовков по алфавиту:
Таблица демонстрационных игр, выпущенных для Sony PSP (по алфавиту)
ErikPshat, ты хочешь чтобы папка создавалась с названием модуля и что с ней делать? туда DATA.ENC? Просто EBOOT создается уже батом и он не может знать названия модуля.
frostegater, ну да, туда помещать сразу EBOOT.PBP.
А через системный вызов, как 7z, разве нельзя перемещать его в ту папку, которую создали, по тем же параметрам mod_name?
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
ErikPshat, да можно и нормально. Просто как-то не этично в prxencrypter пихать запаковку EBOOT. И придется дополнительные аргументы делать для ELF/EBOOT. Проще не делать совсем.
frostegater, ну да, я тоже подумал, что это будет лишняя морока, да и не нужно в принципе.
Кстати, в программе нет проверки на шифрованность файла.
Если я по запарке кидаю уже зашифрованный файл, то он его ещё раз шифрует и так можно до бесконечности.
Чтобы расшифровать 10 раз зашифрованный файл, приходится 10 раз его декриптовать , чтобы получить наконец-то ELF.
Короче, не хватает проверки на ~PSP.
Кстати, сегодня всю ночь посвятил к подготовке финальной сборки. И вот собрал для теста (смотри вложение)
Просто потом в батнике что-то нахимичил, всё экспериментировал, поэтому исходники не подготовил.
Нужно опять батник вернуть к нормальному виду и пора тему закрывать.
Ты хоть отвечай пошустрее, а то слишком долго это всё длится и стоит на месте.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
Ага, тебе элементарно, а я не знаю, с какой стороны скобочку поставить.
Ну нормалёк, теперь работает ))
Сообщение от frostegater
Только не могу все лишние exe уложить в Utils. unpack-pbp не хочет работать с относительными путями.
Кстати, тут unpack-pbp с относительными путями как раз нормально подхватывается через батник.
А вот в коде программы не подхватывается 7z.exe через вызов system с относительными путями. Поэтому необходимо было держать 7z.exe в директории с батником. Но так не красиво, когда файлы россыпью рассыпаются кучей.
Я сделал выход таким образом, но что-то не так:
const char * const path = "/Utils";
int Wmain () {
if (chdir (path) == -1) {
printf ("chdir failed - %s\n", strerror (errno));
}else {
system ("7z.exe a -tgzip temp.gz ! -mx=9 -mfb=128 -mpass=10");
}
return 0;
}
Ладно, думаю всё остальное мелочи. Пора финализировать окончательную сборку...
Чейнжлог:
Добавлено 100 заголовков от демоверсий для подписи, к 3-ём ранее имеющимся. Итого 103 заголовка.
Добавлена проверка на ~PSP и ELF
Заменён механизм сжатия в GZIP библиотекой zlib на консольный 7-Zip.
Исправлен баг, когда файл всегда подписывался бОльшим заголовком, чем он сам, несмотря на используемое сжатие. То есть, даже если файл сжимался намного меньшим размером и свободно помещался в меньший заголовок, то заголовок всё равно брался бОльший, чем несжатый файл.
Устранена ошибка, когда в папке имелся свой PARAM.SFO, то всё равно генерился новый и подменялся исходный.
Кому интересно, полная сборка со всеми исходниками в шапке.
Да, по поводу вопросов - что из исходников не компилируется PrxEncrypter, то мне удалось локализовать, откуда происходит у меня компиляция.
Помимо Minumalist PSPSDK, требуются дополнительные библиотеки, что решается дополнительной установкой Strawberry Perl, т.к. в нём уже всё необходимое устанавливается автоматом, это библы OpenSSL и прочие Crypto, требуемые для компиляции Энкриптора.
It includes perl binaries, compiler (gcc) + related tools, all the external libraries (crypto, graphics, xml ...), all the bundled database clients and all you expect from Strawberry Perl.
Ах да, на всякий случай проверьте, действительно ли прописались пути к компиляторам в переменные среды системы.
Просто иногда бывает, что там записано слишком много значений и новые установки туда не помещаются из-за ограничения длины путей, поэтому попросту не прописываются.
В переменную Path должны быть прописаны пути ко всем установленным компиляторам и разделяются пути через ; (точку с запятой).
Например так:
Да, по поводу вопросов - что из исходников не компилируется PrxEncrypter, то мне удалось локализовать, откуда происходит у меня компиляция.
Помимо Minumalist PSPSDK, требуются дополнительные библиотеки, что решается дополнительной установкой Strawberry Perl, т.к. в нём уже всё необходимое устанавливается автоматом, это библы OpenSSL и прочие Crypto, требуемые для компиляции Энкриптора.
It includes perl binaries, compiler (gcc) + related tools, all the external libraries (crypto, graphics, xml ...), all the bundled database clients and all you expect from Strawberry Perl.
Ах да, на всякий случай проверьте, действительно ли прописались пути к компиляторам в переменные среды системы.
Просто иногда бывает, что там записано слишком много значений и новые установки туда не помещаются из-за ограничения длины путей, поэтому попросту не прописываются.
В переменную Path должны быть прописаны пути ко всем установленным компиляторам и разделяются пути через ; (точку с запятой).
Например так:
Забыл добавить, что строки C:\pspsdk\bin;C:\strawberry\c\bin; должны стоять на первом месте. Сегодня заново установил Perl Strauberry и компиляция не прокатила. Проверил в "Переменных средах", оказалось, что его строка записалась в конец, поэтому компиляцию перехватывал другой компилятор, вроде Cygwin. Переместил строку вперёд и всё пошло успешно.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
но есть прогресс подписи prx для улучшения совместимости psp -> ps3 или нет?
Не совсем понял, но есть возможность переподписывания любых файлов PRX их же родными заголовками.
Для этого нужно только:
Убрать все 103 заголовка из исходников этой темы - main.c
Вставить туда заголовок pspHeader оригинала подписываемого файла
Вставить туда заголовок kirkHeader оригинала подписываемого файла
Заново скомпилировать утилиту
Подписать декриптованный/изменённый PRX его же родным заголовком.
Примечание: pspHeader и kirkHeader достаются точно так же, как я их выкладывал в спойлерах "Headers" каждого сообщения в данной подготовительной теме: https://www.pspx.ru/forum/showthread.php?t=103063
Насчёт совместимости с PS3, наверное в самой PS3 не хватает каких-то функций.
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
То ли лыжи не оттуда поехали, то ли кто-то подменил архив в шапке, но в шапке был выложен не тот архив "PrxEncrypter Mod".
Там лежал архив для подписи апдейтера (обновления прошивки из папки UPDATE), т.е. подписывал хомку не заголовками от 103 демоигр, а именно заголовком "updater" от обновления прошивки с тегом 0000000B.
Залил правильный архив... Странно, что куча народу скачало и никто не заметил
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram
После подписи, идёт запуск, потом экран гаснет и вылетает в меню с "запуск игры невозможен (80020001).
Ну ты же видишь там ошибку выдаёт - Error. 7z.exe что-то там.
Прога делалась давно, в Винде что-то поменялось, поэтому тот 7z видимо не работает.
Скачай и установи свежую версию для своей битности системы: 7-Zip
Затем, как запустишь прогу PrxEncrypter Mod, она извлечёт в ту же папку ресурсы.
Сходи в папку C:\Program Files\7-Zip, скопируй там свежеустановленный 7z.exe и замени им такой же в папке Энкриптера.
Потом в чёрном запущенном окне консоли жми Enter для переподписывания чего ты туда положил.
Только имей в виду, если с игрой или программой присутствует файл PRX, тогда такая прога на OFW не запустится. Там для PRX нужны особые права. Вот например как в проге PSPRadio
Сообщение от evgenii-dp
И как тебе пришло в голову вставить в код для картинок [RESIZE] ссылки не на кртинки, а ссылки на страницы сайта?
С головой дружишь немного? Картинки имеют на конце, после точки, расширения *.png, *.jpg, *.bmp. А у тебя что за расширения в ссылках?
Пользуйся хостингами картинок без рекламы, типа https://imageban.ru/
Там тебе дадут прямую ссылку, например так: https://i4.imageban.ru/out/2021/09/30/20be0a1cc247a6e64e60bc4930cc37ee.png
Вот эту ссылку на картинку с расширением на конце *.png и нужно вставлять в тег для картинок вот так:
Прошу любить и жаловать, Ваш Добро пожаловать в наш Чат в Telegram