PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   Взлом EBOOT подписи! (https://www.pspx.ru/forum/showthread.php?t=89730)

LaKosta 19.01.2011 17:01

Да вот сижу изучаю блин эти стубы с релоками )))

ToTAL_SUiCiDE 19.01.2011 17:08

Ну так и все-таки, а что нужно изменить в методе подписи, что-бы обращаться к ядру?:scratch_one-s_head:

Yoti 19.01.2011 17:15

Цитата:

Сообщение от Wololo
This assumes you have access to your homebrew’s prx. If you only have the EBOOT, you can extract the prx with pbp unpacker (data.psp == your prx)

- if your prx has relocations type 7, run fix-relocations on it (fix-relocations mygame.prx) (if you don’t know, run that anyways, it shouldn’t hurt)
- run PrxEncrypter on your prx (prxEncrypter mygame.prx)
- run pack-pbp the way you usually do it in a makefile (pack-pbp EBOOT.PBP PARAM.SFO icon.png NULL pic0.png pic1.png NULL data.psp NULL )
- That’s it

There are still lots of limitations (no kernel mode, prx should be less than 5MB, no static elf support,…), but tools are being progressively built to make this easier, so I’m sure that as I type this, more convenient tools will already be available. I spotted some tools that allow to sign static elfs by embedding a loader inside of the eboot.

У вас должен быть доступ к основному модулю (prx) вашей программы.
Если же у вас имеется только готовый файл EBOOT.PBP, извлеките из него DATA.PSP (это и есть программный код, он же prx модуль программы).
  • Прогоните модуль программой fix-relocations (это не повредит в любом случае)
    Синтаксис: fix-relocation.exe %имя_модуля%
  • Подпишите ваш модуль программой PrxEncrypter
    Синтаксис: PrxEncrypter.exe %имя_модуля%
  • Запакуйте EBOOT.PBP с вашим новым DATA.PSP

Не забывайте про ограничения:
  • Тип модуля "kernel" не поддерживается
    Можно посмотреть при отладке в линке, в исходном коде и, вроде, в заголовке
  • Размер модуля должен быть менее 5МБ
    Программная его часть (скомпилированный код)
  • Приложение не должно быть статичным
    Должна быть использована директива компилятора: BUILD_PRX = 1

Yoti 19.01.2011 17:21

С предыдущим сообщением не клеить!

Цитата:

Сообщение от Frostegater (Сообщение 932680)
ограничения на юзер походу там нету

Я вот сейчас тебя за дезинформацию забаню на пару-тройку дней. Иди учи мат.часть, пока я остываю. Я стал спать на пару часов меньше: сижу дома - слежу за процессом. А у тебя, 6л9ть, и ограничений уже нет. Уметь открывать файлы хексом - это не значит стать профи.

ToTAL_SUiCiDE,
нужно брать заголовок не от демо-версии, как сейчас, а от чего-либо "ядрёного" (например, регионального обновления) или написать свой. А для подписи своего пока алгоритм не подобрали.

ErikPshat 19.01.2011 17:22

Yoti, вот эта программа всё то-же самое делает по пунктам, только в автоматическом режиме: https://www.pspx.ru/forum/showpost.ph...4&postcount=48

Для PRX нужна другая инструкция: http://wololo.net/talk/viewtopic.php...art=250#p21323
Вот я ща сижу мучаю этот EmitStaticStubs.exe.
Он выдёргивает их PRX:
  • data.h - это просто разложенный побайтно elf-файл.
  • stubs.S - это эти самы стубсы ))) функции релокации.
stubs.S
.set noreorder

#include "pspstub.s"

STUB_START "LflashFatfmt",0x00090011,0x00010005
STUB_FUNC 0xB7A424A4, LflashFatfmt_B7A424A4
STUB_END

STUB_START "sceNand_driver",0x00010000,0x00010005
STUB_FUNC 0x0BEE8F36, sceNand_driver_0BEE8F36
STUB_END

STUB_START "sceNand_driver",0x00010000,0x000C0005
STUB_FUNC 0xAE4438C7, sceNand_driver_AE4438C7
STUB_FUNC 0x41FFA822, sceNand_driver_41FFA822
STUB_FUNC 0x8AF0AB9F, sceNand_driver_8AF0AB9F
STUB_FUNC 0x766756EF, sceNand_driver_766756EF
STUB_FUNC 0x5182C394, sceNand_driver_5182C394
STUB_FUNC 0xEF55F193, sceNand_driver_EF55F193
STUB_FUNC 0xCE9843E6, sceNand_driver_CE9843E6
STUB_FUNC 0xB07C41D4, sceNand_driver_B07C41D4
STUB_FUNC 0xC1376222, sceNand_driver_C1376222
STUB_FUNC 0xB2B021E5, sceNand_driver_B2B021E5
STUB_FUNC 0x8933B2E0, sceNand_driver_8933B2E0
STUB_FUNC 0x01F09203, sceNand_driver_01F09203
STUB_END

STUB_START "LoadCoreForKernel",0x00010000,0x00010005
STUB_FUNC 0xCF8A41B1, LoadCoreForKernel_CF8A41B1
STUB_END

STUB_START "sceSysreg_driver",0x00010000,0x00030005
STUB_FUNC 0xE2A5D1EE, sceSysreg_driver_E2A5D1EE
STUB_FUNC 0x4F46EEDE, sceSysreg_driver_4F46EEDE
STUB_FUNC 0x8F4F4E96, sceSysreg_driver_8F4F4E96
STUB_END

STUB_START "UtilsForKernel",0x00090000,0x00010005
STUB_FUNC 0x840259F1, UtilsForKernel_840259F1
STUB_END

STUB_START "sceSyscon_driver",0x00010000,0x00020005
STUB_FUNC 0x7EC5A957, sceSyscon_driver_7EC5A957
STUB_FUNC 0xC8439C57, sceSyscon_driver_C8439C57
STUB_END

STUB_START "SysclibForKernel",0x00010000,0x00010005
STUB_FUNC 0xC0AB8932, SysclibForKernel_C0AB8932
STUB_END

STUB_START "SysMemForKernel",0x00010011,0x00010005
STUB_FUNC 0x3FC9AE6A, SysMemForKernel_3FC9AE6A
STUB_END
И что там высчитывать, не догоняю.

Переведите пока это:
Цитата:

Step one: extract the stubs from the static elf and compile them in with the loader prx.
Step two: embed the static elf into the loader.
Step three: sign and run.

The loader copies the elf to its proffered address and fixes its stubs with the loaders stubs that where linked by the kernel. Then jumps into it.
И вообще, что вы здесь запёрлись у программистов. Пойдём в Хакинг, тема вроде туда более подходит.

Yoti 19.01.2011 17:28

Цитата:

Сообщение от ErikPshat (Сообщение 932686)
что вы здесь запёрлись

переноси или отдели посты.
Цитата:

Сообщение от ErikPshat (Сообщение 932686)
вот эта программа всё то-же самое делает

Нафиг homebrew.
Цитата:

Сообщение от ErikPshat (Сообщение 932686)
Для PRX нужна другая инструкция

Это для статичных модулей, а не prx.

Цитата:

Step one: extract the stubs from the static elf and compile them in with the loader prx.
Step two: embed the static elf into the loader.
Step three: sign and run.

The loader copies the elf to its proffered address and fixes its stubs with the loaders stubs that where linked by the kernel. Then jumps into it.
  1. Извлеките stubs'ы из статичного эльфа и соберите загрузчик вместе с ними
  2. Интегрируйте статичный эльф в загрузчик
  3. Подпишите и запустите

ErikPshat 19.01.2011 17:37

Yoti, мне кажется, что просто-напросто неподписанные модули PRX не даёт запустить PSP с официальной прошивкой. Потому как она распознаёт, что пытаются запустить неподписанный код. Поэтому думаю, что первым делом тут дело не в релокациях или ещё чего. А вначале нужно суметь подписать модули единой подписью с EBOOT.PBP. Если подпись будет и там и там разная, то соответственно и приложение будет считаться нелигитимным.
Там хоть SCEA вначале бы хоть подпись стояла бы xD

Yoti 19.01.2011 17:51

Вложений: 1
ErikPshat,
это сейчас не критично.

Вот у меня в аттаче два "Привет, мир". Компилируем (или берём готовый EBOOT), подписываем, проверяем.

ErikPshat 19.01.2011 18:04

Yoti, а ты попробуй из подписанного файла извлечь DATA.PSP и декриптовать его через PRXDecrypter )))

Ну вот, пока динамический запустился на оффпроше 6.20 "Hello [dynamic] OFWorld =)"

Yoti 19.01.2011 18:12

ErikPshat,
вот, а статический без подписи должен на кастоме работать. Это DAX постарался - совместимость реализовал.

ErikPshat 19.01.2011 18:17

Эмм. Ну на кастоме понятно, что и без подписи работает. Понятно, что не сам по себе.

Только почему-то при компиляции Build, твой статический даже PRX не выдал. В итоге он не стал подписываться, говоря, что здесь нету PRX'a.

Цитата:

Сообщение от ErikPshat (Сообщение 932700)
Yoti, а ты попробуй из подписанного файла извлечь DATA.PSP и декриптовать его через PRXDecrypter )))

Ты уже понял, почему изначальный EBOOT.PBP, весивший 75Кб, после подписывания вдруг прибавляет 5Мб в весе? )))

Yoti 19.01.2011 18:32

Цитата:

Сообщение от ErikPshat (Сообщение 932703)
Только почему-то при компиляции Build, твой статический даже PRX не выдал

А ты расшифровку prx вспомни =) В нём вся динамика и заключена. Вся разница в этих двух прожках - в одном (!) параметре в makefile - BUILD_PRX = 1. В статике он закомментирован =)

Цитата:

Сообщение от ErikPshat (Сообщение 932700)
попробуй из подписанного файла извлечь DATA.PSP и декриптовать его через PRXDecrypter

Пока ещё ничего не делал. Займусь минут через 20.



Цитата:

Сообщение от ErikPshat (Сообщение 932703)
Ты уже понял, почему изначальный EBOOT.PBP, весивший 75Кб, после подписывания вдруг прибавляет 5Мб в весе?

Хах, ты это мне пишешь? Потому, что размер файла строго прописан в заголовке и его (свой исполняемый файл) увеличивают до необходимого. Это в теме у wololo было написано с самого начала. И я это читал, естественно. И даже ещё помню.
Разжал. Ты про кучу нолей? Так оно меня не удивило (см. абзац выше) =)

ErikPshat 19.01.2011 20:40

Yoti, странно, разве нельзя поменять размер файла в заголовке и потом подписать?
Что за бред?
Sony ведь так не поступает. Что это тогда за взлом подписи и шифрования?

Yoti 19.01.2011 21:56

ErikPshat,
кто-то писал про взлом?))
1. Заголовок содержит ХЕШ, алгоритм создания которого пока неизвестен.
2. В заголовке prx есть данные о разжатом размере, ты это знаешь. Меняешь - ломаешь подпись - файл становится "инвалидом" =)
3. Подпись пока только gzip-секции. Вся структура prx тебе отлично известна.

P.S. Мне ты так в личку и не ответил на вопрос о gzip =)

ErikPshat 20.01.2011 09:55

Цитата:

Сообщение от Yoti (Сообщение 932787)
P.S. Мне ты так в личку и не ответил на вопрос о gzip =)

Эмм, не помню, о чём это. Повтори ещё раз...

И ещё хотел спросить заодно:
Как можно выводить на экран текст -> в нужное для меня место?
Думаю что-то должно быть похоже на такое: printf(x,y, "Hello World"; 140,96)

frostegater 20.01.2011 12:03

Yoti, простите, больше флудерить не буду
учу мат часть, а сообщние удалю пожалуй, стыдно

Yoti 20.01.2011 13:39

Цитата:

Сообщение от ErikPshat (Сообщение 932859)
Эмм, не помню, о чём это. Повтори ещё раз...

Где там размер то прячется, если заголовка prx нет? Я что-то так в спецификации и не нашёл, к своему удивлению.

Цитата:

Сообщение от ErikPshat (Сообщение 932859)
Как можно выводить на экран текст -> в нужное для меня место?
Думаю что-то должно быть похоже на такое: printf(x,y, "Hello World"; 140,96)

Функция - тут.
Просто код:
Код:

pspDebugScreenSetXY(2, 2);
// координаты не в пикселях, а в символах дебаг-шрифта, начиная с 0
pspDebugScreenPrintf("Hello World");


Setsuna-ch4n 20.01.2011 15:58

Хм, ничего еще не решено относительно смерти PSP как платформы, да и пс3 тоже. Сони может просто пихнуть в следующую прошивку список разрешенных приложений (или пары запрещенных) с соответствующими хэш суммами и будет блин вам в масле а не халява

frostegater 20.01.2011 16:15

flashcore, вот на wololo.net пишут что новая офф прошивка намечается

Setsuna-ch4n 20.01.2011 16:33

6.37 чтоли?
PSP 1-3k
PSP Go
сорь за оффтоп


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

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