PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   Русификация игр и софта для PSP (https://www.pspx.ru/forum/forumdisplay.php?f=190)
-   -   Easy PBPRX Encrypter RU - подписываем Homebrew легко! (https://www.pspx.ru/forum/showthread.php?t=90623)

ErikPshat 04.03.2011 11:17

Easy PBPRX Encrypter RU - подписываем Homebrew легко!
 
Вложений: 2
Easy PBP/PRX Encrypter RU v1.0.0.2

Подписываем из-под Windows программы Homebrew для PSP

Вложение 2087

Разработчик: Libre
Год выпуска: 2011
Платформа: Windows & .NET Framework 3.0+
Прошивка: Кастом или любая Официальная
Язык интерфейса: Русский
Автор перевода: ErikPshat

Инструкция по использованию и описание программы в оригинальной теме.

ZeRoWiN 01.04.2012 19:50

:good: Отличный перевод

frostegater 02.04.2012 07:54

ZeRoWiN, ещё б) Эрик такой..
ErikPshat, только пишется не hach а hash)

ErikPshat 02.04.2012 09:15

Цитата:

Сообщение от frostegater (Сообщение 1024515)
только пишется не hach а hash)

Да теперь из-за одной буквы перезаливать не буду ))

RepStosw 28.05.2022 15:05

Не работает. "Обнаружена неперемещаемая секция". Итоговый EBOOT.EBP вышел меньше в раза 1,5

Yoti 28.05.2022 15:09

RepStosw,
код писать нормально нужно, а не CD на хакерских прошивках обходить)

Klement 24.08.2023 21:30

Круто
 
Всё пошло!

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

Цитата:

Сообщение от pspsaludo (Сообщение 1284583)
Вот все секции elf, что тут мешает?

Зачем нам эти данные, когда эти данные не Windows программы, а PSP программы :D

Цитата:

Сообщение от pspsaludo (Сообщение 1284583)
Выдаёт сообщение о неперемещённой секции.

Скорее всего у вас в хоумбрю DATA.PSP не ELF, а уже подписанное ~PSP. Вы хотя бы извлеките из EBOOT.PBP файл DATA.PSP и посмотрите его через Хекс-редактор.

Читайте инструкцию, как написано в шапке:
Цитата:

Сообщение от ErikPshat (Сообщение 946338)
Инструкция по использованию и описание программы в оригинальной теме.

Смотрите там более свежие методы подписывания под 6.60 хотя бы. А этот метод давно устаревший, где используется ELF не более 8МБ.

pspsaludo 19.05.2024 11:14

Цитата:

Сообщение от ErikPshat (Сообщение 1284594)
Зачем нам эти данные, когда эти данные не 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

Цитата:

Сообщение от pspsaludo (Сообщение 1284596)
Куда дальше копать?

Копать в кастомизацию 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

Yoti 19.05.2024 19:38

Цитата:

Сообщение от pspsaludo (Сообщение 1284604)
Не знаю, почему они это не написали, может это очевидно, но для меня не так оказалось очевидно. Без этих строк EBOOT.EBP неправильно подписывается (выдаёт ошибку о неперемещаемых секциях) или при запуске на реальной консоли выдает ошибку 80020148 (неподдерживаемый тип PRX).

Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.

И да, строчка с указанием версии не должна быть нужна, насколько мне известно. Вот сжатие в PRX да. А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?

ErikPshat 20.05.2024 03:35

Цитата:

Сообщение от pspsaludo (Сообщение 1284604)
BUILD_PRX=1

Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.

pspsaludo 20.05.2024 03:53

Цитата:

Сообщение от Yoti (Сообщение 1284617)
Потому, что SDK в состоянии извечной доработки. Мой проект, написанный на SDK от конца 2023, не собирается в SDK, скачанном меньше месяца назад. Пишите жалобы на GitHub и ищите помощи в Discord.

Потестировал своё подписанное приложение на реальной консоли. Не всё работает, в некоторых случаях консоль повисает.

Но если запустить 660PRO-C2, а потом приложение, то работает всегда. Приложение требует много HEAP (динамической памяти). Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?

Цитата:

Сообщение от Yoti (Сообщение 1284617)
А в чём стоит задача вообще, зачем использовать эту древнюю софтину для псевдоподписи?

А какие есть более современные способы подписи?

И где взять 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
Цитата:

Сообщение от ErikPshat (Сообщение 1284639)
Верно, с этого и надо было начинать, чтобы до конца полноценный динамический ELF собрать, а не пытаться запускать недоделанный статичный ELF, где в начале код забит нулями.

А где можно почитать про PRX, что это такое и с чем едят?

Всегда делал из ELF бинарник (для других платформ) и загружал его по жёстко указанному адресу. А PRX это что такое ? :)

ErikPshat 20.05.2024 05:05

Цитата:

Сообщение от pspsaludo (Сообщение 1284643)
Может ли так быть, что в случае 660PRO-C2 распределение свободной памяти другое, по сравнению со стандартной прошивкой 6.60 ?

Не в этом дело. Просто 660PRO-C2 - это кастомная прошивка, где отключены все проверки подписи файлов. А в официальной прошивке модули проверяются на подпись (~PSP), только потом получают права на запуск. ~PSP - это конечно же не подпись, а только аббревиатура подписанного файла, где в этой секции расположены необходимые данные о файле, ключи и Тег подписи для распознавания.

Цитата:

Сообщение от pspsaludo (Сообщение 1284643)
А где можно почитать про PRX, что это такое и с чем едят?

PRX - это просто модули приложения, по типу DLL или консольных модулей EXE для Windous. Грубо говоря, они выполняют консольные вспомогательные операции. В принципе EBOOT.BIN или DATA.PSP - это исполняемые экзешники, они так же построены по типу PRX, только они не модули, а типа GUI приложения или игры (исполняемые экзешники). Вот и вся разница, но в принципе они все PRX, независимо от расширения.

Yoti 20.05.2024 17:59

Цитата:

Сообщение от pspsaludo (Сообщение 1284643)
Но если запустить 660PRO-C2, а потом приложение, то работает всегда.

Ну логично. Кастом даёт полные возможности.

Цитата:

Сообщение от pspsaludo (Сообщение 1284643)
А какие есть более современные способы подписи?

psptools из состава Infinity

Цитата:

Сообщение от pspsaludo (Сообщение 1284643)
И где взять SDK последней версии для Windows?

Вообще, в официальном репозитории на GitHub.
Конкретно для Windows не знаю, не использую.

pspsaludo 23.05.2024 13:46

Цитата:

Сообщение от Yoti (Сообщение 1284676)
Вообще, в официальном репозитории на GitHub.
Конкретно для Windows не знаю, не использую.

Всё закончилось тем, что пересобрал проект в Линуксе исползуя GCC 9.3.0.

Более старшие версии SDK/тулчейна требуют GLIBC 2.32 - 2.36, на Ubuntu 15 нет таких, и не будет.

Yoti 24.05.2024 19:28

pspsaludo,
я, конечно, сам местами использую Ubuntu 18, но 15 это вообще мрак.

ErikPshat 25.05.2024 06:40

Цитата:

Сообщение от Yoti (Сообщение 1284906)
я, конечно, сам местами использую Ubuntu 18

А чего не 20-ю?:
Код:

Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:      focal


pspsaludo 25.05.2024 14:55

Цитата:

Сообщение от Yoti (Сообщение 1284906)
pspsaludo,
я, конечно, сам местами использую Ubuntu 18, но 15 это вообще мрак.

Мой старый комп еле тянул 18-ю. Поэтому 15-я более-менее идёт. Но Win7 всёравно - вамая быстрая ОС на моём ПК.

pspsaludo добавил 25.05.2024 в 14:55
Цитата:

Сообщение от pspsaludo (Сообщение 1284832)
Всё закончилось тем, что пересобрал проект в Линуксе исползуя GCC 9.3.0

Очень странно, что не нашёлся энтузиаст, который бы собрал тулчейн с СДК для Винды с GCC >=9.x.x.

Тот что сейчас под винду, он не поддерживает C++11, который жизненно необходим при портировании игрушек всяких.

Начиная с C++11 ЕМНИП есть поддержка constexpr, которая даёт возможность сделать шифрование строк в программе (при этом в исходном коде строки будут нормальные).


Текущее время: 16:43. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.