Просмотр полной версии : Easy PBPRX Encrypter RU - подписываем Homebrew легко!
ErikPshat
04.03.2011, 11:17
Easy PBP/PRX Encrypter RU v1.0.0.2
Подписываем из-под Windows программы Homebrew для PSP
2087
Разработчик: Libre
Год выпуска: 2011
Платформа: Windows & .NET Framework 3.0+
Прошивка: Кастом или любая Официальная
Язык интерфейса: Русский
Автор перевода: ErikPshat
Инструкция по использованию и описание программы в оригинальной теме (http://www.pspx.ru/forum/showthread.php?t=90599).
frostegater
02.04.2012, 07:54
ZeRoWiN, ещё б) Эрик такой..
ErikPshat, только пишется не hach а hash)
ErikPshat
02.04.2012, 09:15
только пишется не hach а hash)Да теперь из-за одной буквы перезаливать не буду ))
RepStosw
28.05.2022, 15:05
Не работает. "Обнаружена неперемещаемая секция". Итоговый EBOOT.EBP вышел меньше в раза 1,5
RepStosw,
код писать нормально нужно, а не CD на хакерских прошивках обходить)
pspsaludo
19.05.2024, 07:03
Респект ковбою (OP)! :good:
Приложение не заработало на реальной PSP, а в эмуляторе работает.
Выдаёт сообщение о неперемещённой секции.
Что делать?
https://imageup.ru/img197/4825881/1.jpg
Размер EBOOT.PBP уменьшился
Как говорится, успех мероприятия зависит от необходимых исходных данных. Вот все секции elf, что тут мешает?
There are 29 section headers, starting at offset 0x15ac90:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .reginfo MIPS_REGINFO 08900000 1592e4 000018 01 0 0 4
[ 2] .init PROGBITS 08900018 001018 000024 00 AX 0 0 1
[ 3] .text PROGBITS 0890003c 00103c 139b78 00 AX 0 0 4
[ 4] .fini PROGBITS 08a39bb4 13abb4 00001c 00 AX 0 0 1
[ 5] .sceStub.text PROGBITS 08a39bd0 13abd0 0001c8 00 AX 0 0 4
[ 6] .lib.ent.top PROGBITS 08a39d98 13ad98 000004 00 A 0 0 4
[ 7] .lib.ent PROGBITS 08a39d9c 13ad9c 000010 00 A 0 0 4
[ 8] .lib.ent.btm PROGBITS 08a39dac 13adac 000004 00 A 0 0 4
[ 9] .lib.stub.top PROGBITS 08a39db0 13adb0 000004 00 A 0 0 4
[10] .lib.stub PROGBITS 08a39db4 13adb4 000104 00 A 0 0 4
[11] .lib.stub.btm PROGBITS 08a39eb8 13aeb8 000004 00 A 0 0 4
[12] .rodata.sceModule PROGBITS 08a39ec0 13aec0 000040 00 A 0 0 16
[13] .rodata.sceReside PROGBITS 08a39f00 13af00 000104 00 A 0 0 4
[14] .rodata.sceNid PROGBITS 08a3a004 13b004 0000e4 00 A 0 0 4
[15] .rodata PROGBITS 08a3a0e8 13b0e8 01441c 00 A 0 0 8
[16] .eh_frame PROGBITS 08a4e604 14f604 008034 00 WA 0 0 4
[17] .gcc_except_table PROGBITS 08a56638 157638 000a2c 00 WA 0 0 4
[18] .ctors PROGBITS 08a57064 158064 00002c 00 WA 0 0 4
[19] .dtors PROGBITS 08a57090 158090 000008 00 WA 0 0 4
[20] .jcr PROGBITS 08a57098 158098 000004 00 WA 0 0 4
[21] .data PROGBITS 08a570a0 1580a0 001238 00 WA 0 0 16
[22] .sdata PROGBITS 08a582d8 1592d8 00000c 00 WAp 0 0 4
[23] .sbss NOBITS 08a582e4 1592e4 000000 00 WAp 0 0 1
[24] .bss NOBITS 08a58300 1592e4 0397c0 00 WA 0 0 32
[25] .comment PROGBITS 00000000 1592fc 001866 00 0 0 1
[26] .mdebug.eabi32 PROGBITS 00000000 15ab62 000000 00 0 0 1
[27] .gcc_compiled_lon PROGBITS 00000000 15ab62 000000 00 0 0 1
[28] .shstrtab STRTAB 00000000 15ab62 00012c 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
ErikPshat
19.05.2024, 10:16
Вот все секции elf, что тут мешает?
Зачем нам эти данные, когда эти данные не Windows программы, а PSP программы :D
Выдаёт сообщение о неперемещённой секции.
Скорее всего у вас в хоумбрю DATA.PSP не ELF, а уже подписанное ~PSP. Вы хотя бы извлеките из EBOOT.PBP файл DATA.PSP и посмотрите его через Хекс-редактор.
Читайте инструкцию, как написано в шапке:
Инструкция по использованию и описание программы в оригинальной теме (https://www.pspx.ru/forum/showthread.php?t=90599).
Смотрите там более свежие методы подписывания под 6.60 хотя бы. А этот метод давно устаревший, где используется ELF не более 8МБ.
pspsaludo
19.05.2024, 11:14
Зачем нам эти данные, когда эти данные не Windows программы, а PSP программы :D
Скорее всего у вас в хоумбрю DATA.PSP не ELF, а уже подписанное ~PSP. Вы хотя бы извлеките из EBOOT.PBP файл DATA.PSP и посмотрите его через Хекс-редактор.
Читайте инструкцию, как написано в шапке:
Смотрите там более свежие методы подписывания под 6.60 хотя бы. А этот метод давно устаревший, где используется ELF не более 8МБ.
Я взял другой проект из PSP SDK: C:\devkitPSP\psp\sdk\samples\audio\polyphonic
и собрал его.
Он работает в эмуляторе.
Дальше я как и вы посоветовали - извлёк DATA.PSP и просмотрел оба файла в Хекс-редакторе. У того что *.PSP - с ELF-хедером. Попробовал его подписать: ошибка о неперемещаемых секциях не ушла. И не запускается на реальной PSP.
Но в то же время, скачанные демки из интернета отлично подписываются и работают на консоли.
У меня складывается впечатление, что криво собирается. Хотя make-файл использую из проекта.
Куда дальше копать?
pspsaludo
19.05.2024, 14:30
Куда дальше копать?
Копать в кастомизацию make-файла. Удалось собрать и подписать проект. make-файл должен быть таким (пример):
TARGET = main
OBJS = main.o
INCDIR =
CFLAGS = -Os -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti
ASFLAGS = $(CFLAGS)
#будет работать на 5.00 или 6.35.
PSP_FW_VERSION = 371
LIBDIR =
LDFLAGS =
LIBS = -lpspaudiolib -lpspaudio -lpsppower
BUILD_PRX=1
PSP_EBOOT_TITLE = Polyphonic sample by Shine
EXTRA_TARGETS = EBOOT.PBP
PSPSDK = $(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
а не таким, как в SDK. Важные строчки:
PSP_FW_VERSION = 371
BUILD_PRX=1
Не знаю, почему они это не написали, может это очевидно, но для меня не так оказалось очевидно. Без этих строк EBOOT.EBP неправильно подписывается (выдаёт ошибку о неперемещаемых секциях) или при запуске на реальной консоли выдает ошибку 80020148 (неподдерживаемый тип PRX).
Вообще, удивительно, что пришлось по крупицам собирать инфу. Помог этот форум и make-файл из 660PRO-C2
Не знаю, почему они это не написали, может это очевидно, но для меня не так оказалось очевидно. Без этих строк EBOOT.EBP неправильно подписывается (выдаёт ошибку о неперемещаемых секциях) или при запуске на реальной консоли выдает ошибку 80020148 (неподдерживаемый тип PRX).
Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.
И да, строчка с указанием версии не должна быть нужна, насколько мне известно. Вот сжатие в PRX да. А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?
ErikPshat
20.05.2024, 03:35
BUILD_PRX=1
Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.
pspsaludo
20.05.2024, 03:53
Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.
Потестировал своё подписанное приложение на реальной консоли. Не всё работает, в некоторых случаях консоль повисает.
Но если запустить 660PRO-C2, а потом приложение, то работает всегда. Приложение требует много HEAP (динамической памяти). Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?
А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?
А какие есть более современные способы подписи?
И где взять SDK последней версии для Windows? А то там GCC 4.5.x - он не поддерживает C++11, на котором написана игра.
Видел под Linux PSP SDK с GCC v.9 ЕМНИП, но он не работает в Ubuntu 15, так как требует GLIBC 2.36, который не ставится в Ubuntu 15.
pspsaludo добавил 20.05.2024 в 03:53
Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.
А где можно почитать про PRX, что это такое и с чем едят?
Всегда делал из ELF бинарник (для других платформ) и загружал его по жёстко указанному адресу. А PRX это что такое ? :)
ErikPshat
20.05.2024, 05:05
Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?
Не в этом дело. Просто 660PRO-C2 - это кастомная прошивка, где отключены все проверки подписи файлов. А в официальной прошивке модули проверяются на подпись (~PSP), только потом получают права на запуск. ~PSP - это конечно же не подпись, а только аббревиатура подписанного файла, где в этой секции расположены необходимые данные о файле, ключи и Тег подписи для распознавания.
А где можно почитать про PRX, что это такое и с чем едят?
PRX - это просто модули приложения, по типу DLL или консольных модулей EXE для Windous. Грубо говоря, они выполняют консольные вспомогательные операции. В принципе EBOOT.BIN или DATA.PSP - это исполняемые экзешники, они так же построены по типу PRX, только они не модули, а типа GUI приложения или игры (исполняемые экзешники). Вот и вся разница, но в принципе они все PRX, независимо от расширения.
Но если запустить 660PRO-C2, а потом приложение, то работает всегда.
Ну логично. Кастом даёт полные возможности.
А какие есть более современные способы подписи?
psptools из состава Infinity
И где взять SDK последней версии для Windows?
Вообще, в официальном репозитории на GitHub.
Конкретно для Windows не знаю, не использую.
pspsaludo
23.05.2024, 13:46
Вообще, в официальном репозитории на GitHub.
Конкретно для Windows не знаю, не использую.
Всё закончилось тем, что пересобрал проект в Линуксе исползуя GCC 9.3.0.
Более старшие версии SDK/тулчейна требуют GLIBC 2.32 - 2.36, на Ubuntu 15 нет таких, и не будет.
pspsaludo,
я, конечно, сам местами использую Ubuntu 18, но 15 это вообще мрак.
ErikPshat
25.05.2024, 06:40
я, конечно, сам местами использую Ubuntu 18
А чего не 20-ю?:
Description: Ubuntu 20.04.5 LTS
Release: 20.04
Codename: focal
pspsaludo
25.05.2024, 14:55
pspsaludo,
я, конечно, сам местами использую Ubuntu 18, но 15 это вообще мрак.
Мой старый комп еле тянул 18-ю. Поэтому 15-я более-менее идёт. Но Win7 всёравно - вамая быстрая ОС на моём ПК.
pspsaludo добавил 25.05.2024 в 14:55
Всё закончилось тем, что пересобрал проект в Линуксе исползуя GCC 9.3.0
Очень странно, что не нашёлся энтузиаст, который бы собрал тулчейн с СДК для Винды с GCC >=9.x.x.
Тот что сейчас под винду, он не поддерживает C++11, который жизненно необходим при портировании игрушек всяких.
Начиная с C++11 ЕМНИП есть поддержка constexpr, которая даёт возможность сделать шифрование строк в программе (при этом в исходном коде строки будут нормальные).
ErikPshat,
не лезу трогать лишний раз то, что и так работает.
vBulletin® v3.8.7, Copyright ©2000-2025, vBulletin Solutions, Inc. Перевод: zCarot