резонно) но вроде и без него неплохо люди справляются
Ins|der добавил 18.01.2011 в 19:09
Цитата:
Сообщение от Acid_Jack
(Сообщение 932290)
Но радует тот факт, что для того, чтобы запретить запуск на оф. прошивке контент, подписанный данными ключом, сони придётся менять сам кирк.
то есть убрать поддержку всех официальных приложений, подписанных им? это негуманно =)
ErikPshat
18.01.2011 20:15
А это что за лабуда?
SCEkrit.c (v1.0): Compute Sony's Private Keys
Код:
// SCEkrit.c (v1.0): Compute Sony's Private Keys
// Based on Sven's sceverify.c
// -------------------------------------------------------------
// Compile by copying to fail0verflow's ps3tools and add
// SCEkrit.c to TOOLS in the Makefile.
// Depends on libgmp; add -lgmp to LDFLAGS
// - Aaron Lindsay / @AerialX
// And thanks gbcft!
// Copyright 2010 Sven Peter <svenpeter@gmail.com>
// Licensed under the terms of the GNU GPL, version 2
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
switch (info->app_type) {
case 1:
id = KEY_LV0;
break;
case 2:
id = KEY_LV1;
break;
case 3:
id = KEY_LV2;
break;
case 4:
id = KEY_APP;
break;
case 5:
id = KEY_ISO;
break;
case 6:
id = KEY_LDR;
break;
default:
fail("invalid type: %08x", info->app_type);
}
static void decrypt(u8* ptr)
{
if (keyid < 0)
keyid = sce_decrypt_header(ptr, klist);
else if (keyid != sce_decrypt_header(ptr, klist))
fail("Both files must have the same key id");
if (keyid < 0)
fail("sce_decrypt_header failed");
if (sce_decrypt_data(ptr) < 0)
fail("sce_decrypt_data failed");
if (klist->keys[keyid].pub_avail < 0)
fail("no public key available");
if (ecdsa_set_curve(klist->keys[keyid].ctype) < 0)
fail("ecdsa_set_curve failed");
// SCEkrit.c (v1.0): Compute Sony's Private Keys
// Based on Sven's sceverify.c
// -------------------------------------------------------------
// Compile by copying to fail0verflow's ps3tools and add
// SCEkrit.c to TOOLS in the Makefile.
// Depends on libgmp; add -lgmp to LDFLAGS
// - Aaron Lindsay / @AerialX
// And thanks gbcft!
// Copyright 2010 Sven Peter <svenpeter@gmail.com>
// Licensed under the terms of the GNU GPL, version 2
// http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
switch (info->app_type) {
case 1:
id = KEY_LV0;
break;
case 2:
id = KEY_LV1;
break;
case 3:
id = KEY_LV2;
break;
case 4:
id = KEY_APP;
break;
case 5:
id = KEY_ISO;
break;
case 6:
id = KEY_LDR;
break;
default:
fail("invalid type: %08x", info->app_type);
}
static void decrypt(u8* ptr)
{
if (keyid < 0)
keyid = sce_decrypt_header(ptr, klist);
else if (keyid != sce_decrypt_header(ptr, klist))
fail("Both files must have the same key id");
if (keyid < 0)
fail("sce_decrypt_header failed");
if (sce_decrypt_data(ptr) < 0)
fail("sce_decrypt_data failed");
if (klist->keys[keyid].pub_avail < 0)
fail("no public key available");
if (ecdsa_set_curve(klist->keys[keyid].ctype) < 0)
fail("ecdsa_set_curve failed");
Подписывальщик PS3 приложений, точнее не совсем. Просто получает волшебный ключ, которым можно потом подписать свое приложение для PS3.
ToTAL_SUiCiDE
18.01.2011 20:43
Ins|der, возможно официальные наработки сони избавили бы от массы проблем, связаных с недопониманием различных библиотек) В любом случае это дало бы толчок в разработке, если бы они сделали все софтовое наполнение опенсорсным. Но это врятли будет;)
akela1979
18.01.2011 23:15
Zer01ne OpenIdea Team (OIP) Black Devs Team (BDT) SignMe
Вложений: 1
[IMG]http://img203.**************/img203/2104/signmeu.jpg[/IMG]
Only works on Windows, the application can only sign of PBP which have been compiled with the option (BUILD_PRX = 1) in the makefile "most current application. источник
frostegater
19.01.2011 07:16
akela1979, Ни черта он не подписывает!
Zer01ne (aka Dridri85) всегда хотел быть впереди всех.
Поэтому и славился alpha/beta версиями :D
Wes64
19.01.2011 13:21
Цитата:
Сообщение от Frostegater
(Сообщение 932492)
akela1979, Ни черта он не подписывает!
Zer01ne (aka Dridri85) всегда хотел быть впереди всех.
Поэтому и славился alpha/beta версиями :D
Угу она пишет твоя прога типа в такой папке а там пусто :)
ErikPshat
19.01.2011 14:06
Вот рабочая прога: carlosgs updated PSCRYPTER to v2.0here
Я уже потестил ее... Запустил PGE Lua, PicoDrive, bookR (смог подписать, только после распаковки файла data.psp PRXdecrypter'ом)
ErikPshat
19.01.2011 14:53
Причём EBOOT.PBP шифруется прекрасно. А вот сопутствующие PRX что-то я не догнал, что с ними делать. Пытаюсь через prxEncryper прогнать, но прога не запускается с чужими PRX-ами.
А вот те Ибуты, что по одному, прекрасно запускаются на официалке.
Ну всё! Нас ждёт наводнение, всемирный потоп. Потому что PS3 идёт в параллельном направлении и даже немного опережает PSP.
Acid_Jack
19.01.2011 14:57
ErikPshat, wololo же по полочкам расписал процесс подписывания
HOW TO SIGN YOUR HOMEBREW
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)
1. 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)
2. run PrxEncrypter on your prx (prxEncrypter mygame.prx)
3. 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 )
4. That’s it
ErikPshat
19.01.2011 15:00
Acid_Jack, а теперь по русски можешь объяснить, как подписать PRX.
Acid_Jack
19.01.2011 15:03
В простом случае pbpunpack'ером извлечь из EBOOT.PBP файл DATA.PSP. Подписать DATA.PSP и упаковать его обратно в EBOOT.PBP.
dn3d
19.01.2011 15:08
Цитата:
Сообщение от Acid_Jack
(Сообщение 932627)
В простом случае pbpunpack'ером извлечь из EBOOT.PBP файл DATA.PSP. Подписать DATA.PSP и упаковать его обратно в EBOOT.PBP.
А что будешь делать если кроме EBOOT.PBP у тебя в программе используется *.prx ??? при загрузке этого prx ЗЫЗа ругается)))
ErikPshat
19.01.2011 15:10
Acid_Jack, нет, я спрашиваю как PRX зашифровать, а не EBOOT.PBP.
То есть, я так понял, что ntbridge.prx переименовать в DATA.PSP, запихать в EBOOT.PBP, зашифровать, потом извлечь и опять переименовать в ntbridge.prx.
dn3d
19.01.2011 15:12
Цитата:
Сообщение от ErikPshat
(Сообщение 932633)
Acid_Jack, нет, я спрашиваю как PRX зашифровать, а не EBOOT.PBP.
То есть, я так понял, что ntbridge.prx переименовать в DATA.PSP, запихать в EBOOT.PBP, зашифровать, потом извлечь и опять переименовать в ntbridge.prx.
не получится, я так уже пробовал... такая же ошибка
Acid_Jack
19.01.2011 15:12
Ух ты ж ёжик...
Если prx внешний, возможно, просто стоит обработать его prxEncrypter'ом.
ErikPshat
19.01.2011 15:13
За пару дней успеем подписать все приложения?
dn3d, вон SD6719 тоже уже успел подписать и выложить Bookr )))
Цитата:
Сообщение от Acid_Jack
(Сообщение 932635)
обработать его prxEncrypter'ом
То-же ошибка. Не принимает его прога. Они видать должны быть как-то совместно подписаны или ключ к PRX-ам должен лежать в EBOOT'e.
Acid_Jack
19.01.2011 15:18
ErikPshat, и вторая версия тоже?
Yoti
19.01.2011 16:54
Вы на user mode ограничение и смену методов релокации болт положили?
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 %имя_модуля%
Тип модуля "kernel" не поддерживается
Можно посмотреть при отладке в линке, в исходном коде и, вроде, в заголовке
Размер модуля должен быть менее 5МБ
Программная его часть (скомпилированный код)
Приложение не должно быть статичным
Должна быть использована директива компилятора: BUILD_PRX = 1
Yoti
19.01.2011 17:21
С предыдущим сообщением не клеить!
Цитата:
Сообщение от Frostegater
(Сообщение 932680)
ограничения на юзер походу там нету
Я вот сейчас тебя за дезинформацию забаню на пару-тройку дней. Иди учи мат.часть, пока я остываю. Я стал спать на пару часов меньше: сижу дома - слежу за процессом. А у тебя, 6л9ть, и ограничений уже нет. Уметь открывать файлы хексом - это не значит стать профи.
ToTAL_SUiCiDE,
нужно брать заголовок не от демо-версии, как сейчас, а от чего-либо "ядрёного" (например, регионального обновления) или написать свой. А для подписи своего пока алгоритм не подобрали.
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.
Извлеките stubs'ы из статичного эльфа и соберите загрузчик вместе с ними
Интегрируйте статичный эльф в загрузчик
Подпишите и запустите
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 пишут что новая офф прошивка намечается