Вход

Просмотр полной версии : Взлом EBOOT подписи!


Страницы : [1] 2

frostegater
04.01.2011, 14:13
Абсолютно недавно старейшему разработчику(Mathieulh), состоявшему в команде M33 удалось взломать оригинальную EBOOT подпись вот ссылка на ключи (http://www.twitlonger.com/show/7s91iq)
Так вот он объявил, что этими ключами можно подписать приложения и модули PRX, но нельзя запустить модуль обновления.
Вот одна из возможно подписанных программ: Bookr (http://depositfiles.com/files/j349f1oxk)
Геймбут идет, а программа вылетает и выдает ошибку 80020148(неподдерживаемый тип PRX).
Народ, помогите разобраться "что и как": как подписать модули и программу, есть ли подпись на Bookr или это глюк. Заранее спасибо!:scratch_one-s_head:

ToTAL_SUiCiDE
07.01.2011, 20:16
Аххах ну это замечательно, тока видать если доконца доломают, то это уже будет смерть PSP как консоли.

Yoti
07.01.2011, 21:05
Frostegater,
извлеки модули эмулятора psp из памяти ps3, декомпилируй/дизасемблируй и посмотри в них алгоритм подписи.

frostegater
08.01.2011, 04:48
Frostegater,
извлеки модули эмулятора psp из памяти ps3, декомпилируй/дизасемблируй и посмотри в них алгоритм подписи.

Мне бы сначала найти гденибудь PS3 или хотябы дамп памяти эмулятора.
Вот что Mathieulh успел слепить (http://www.pspx.ru/forum/showpost.php?p=928522&postcount=467)
Что это такое?:unknw:

Кстати эта прога обратно не закриптовывает:dash:

Yoti
09.01.2011, 16:23
хотябы дамп памяти эмулятора
Причём тут память? Загрузи и распакуй прошивку.

Кстати эта прога обратно не закриптовывает
Спасибо, кэп. Там даже в названии архива чётко указано, что она делает.

akela1979
09.01.2011, 22:56
и наступил тот день!
Mathieulh & Draan released KIRK Keys and Algoythm:
Mathieulh has announced via Twitter that he's Key and the algorithm of the PSP has now CRACKED.
One can thus start a signed homebrew program on any PSP, regardless of whether CFW or OFW

KIRK Keys and Algoythm (https://code.google.com/p/kirk-engine/source/detail?r=10)
Is only for Dev's
источник twitter.com (http://twitter.com/Mathieulh/status/24166067018403840)

Небольшая поправка от wololo:
(I'm really sorry I don't speak german)
Mentioning only Mathieulh in this article is a bit unfair.

If you look at the repository, you will see it was not created by Mathieulh, but by Draan.

Additionally, there is the work of many, many more devs behind this codebase.

Mathieu definitely triggered all this and contributed a lot, but you should at least mention Draan in the original post.
источник pspking.de (http://www.pspking.de/forum/showthread.php?tid=31587&pid=356155#pid356155)
источник wololo.net (http://wololo.net/wagic/2011/01/10/mathieulh-i-told-sony-how-to-prevent-the-copy-of-umds-2-years-ago-they-never-replied/)

akela1979
16.01.2011, 14:57
первая подписанная Homebrew на OFW проверил лично (PSP 3004, 4g, 9c, OFW6.20):yahoo:
http://www.youtube.com/watch?v=HQuLoHdxPMY
источник wololo.net (http://wololo.net/wagic/2011/01/16/first-signed-homebrew-on-the-psp/)

Digger_HLDV
16.01.2011, 15:08
ВОТ ТЕРЕрЬ ПОНЕСЛАСЬ!!! даёшь подписанный promiteus iso loader для Народа!!!!

ToTAL_SUiCiDE
16.01.2011, 19:37
ВОТ ТЕРЕрЬ ПОНЕСЛАСЬ!!! даёшь подписанный promiteus iso loader для Народа!!!!

даешь умершую платформу:crazy:

Yoti
16.01.2011, 20:01
Digger_HLDV,
с каких пор он стал user mode?

Digger_HLDV
16.01.2011, 20:21
Digger_HLDV,
с каких пор он стал user mode?
мне надо попроще вопросы задовать... а так я думал что это тоже homebrew

ToTAL_SUiCiDE
16.01.2011, 20:28
Yoti, чето у тебя посты двоятся

Yoti
16.01.2011, 20:36
Digger_HLDV,
если проще - то то, что работает при помощи HBL, может быть подписано и будет работать. ISO загрузчик работает только в HEN окружении.

Digger_HLDV
16.01.2011, 20:57
Digger_HLDV,
если проще - то то, что работает при помощи HBL, может быть подписано и будет работать. ISO загрузчик работает только в HEN окружении.
а то что выложили(reflexioxs что ли), без подписи, на чём будет работать?

Digger_HLDV добавил 16.01.2011 в 20:57
Flood Mod on
одновременно пытаюсь смотреть фильм Tucker & Dale vs Evil - нормальная ржака
Flood Mod off

frostegater
17.01.2011, 07:35
Вот kirk-enrine (http://kirk-engine.googlecode.com/svn/). Модули подписи приложений для PSP. По моему это обновление PSPSDK. Или как? Я с SDK только знакомлюсь и C++ учу :)

Yoti
17.01.2011, 13:11
Подписывалка, с сорцами.

frostegater
17.01.2011, 15:22
Помните корявые панты Datel с якобы взломом вроде masterkey.
Это типа Cwcheat но я так и не стал вникать как он работает.
Actionreplay (http://pspfaqs.ru/news/683-datel-action-replay-analog-cwcheat-rabotayushhij.html) Скорее всего Datel это какието компаньоны SCEI иначе их бы за это лет этак на 10 засадили

Ins|der
18.01.2011, 02:38
Хакерскую сцену в последнее время прямо-таки прорвало =)
Столько достижений и одно затмевает собою другое

Boryan
18.01.2011, 03:31
мдаа ..такими методами..Соня решила выбраться из полной попы по продажам их мегазащищённых творений :)

ivy
18.01.2011, 11:58
Boryan, Очень кстати похоже.

frostegater
18.01.2011, 12:22
Boryan, интересно почему тогда они не обнародовали Pandora2?

VanSardis
18.01.2011, 13:15
ситуацию прояснит выпуск аппаратов с ТА-95

Boryan
18.01.2011, 13:43
Boryan, интересно почему тогда они не обнародовали Pandora2?

ну это уже было бы слишком...сам пойми....сервисный доступ это совсем другое..

frostegater
18.01.2011, 14:23
Boryan, Сервисный доступ это все!
Это все очем только можно мечтать.
Это безграничное пространство для творчества.
И зачем SCEI теперь это скрывать, она знает, что есть кудесники (вроде тебя) и среди моих знакомых есть один. А помоему никто это еще не обнародовал только из-за того, что это нельзя сделать кустарным способом или просто из алчности (хотя не мне судить):)

Ins|der
18.01.2011, 15:37
Boryan, вполне возможно
Могли пойти на компромисс с целью стимуляции интереса к доживающей свой век консоли

ToTAL_SUiCiDE
18.01.2011, 15:52
Ins|der, ну так в принципе могли бы и оф сдк и исходники от прошивки)

lex3a
18.01.2011, 16:00
Ну вот и еще Fail (http://wololo.net/talk/viewtopic.php?f=5&t=1899) от Sony.

Acid_Jack
18.01.2011, 16:04
lex3a, подними глаза выше, к 16-му посту.

lex3a
18.01.2011, 16:06
То для PC, а это для самой PSP же. Так что окончательный конец.

Acid_Jack
18.01.2011, 16:13
Дык, а не всё ли равно, где подписывать ибуты?
Твой так называемый «гамновер» произошёл раньше, с публикацией сырцов.

DIIGMO
18.01.2011, 16:18
А в чём
окончательный конец.
если исо лоадер всё равно в пролёте?

Acid_Jack
18.01.2011, 16:19
Ditemzy, походу, написание загрузчика ISO — это уже просто дело времени.

DIIGMO
18.01.2011, 16:24
Acid_Jack, для user mode? Сомневаюсь, что это возможно, иначе бы сделали во времена HBL. А то выпустили какую-то поделку Коэнс-лоадер и на этом движение закончилось.
Или ты имеешь ввиду что-то другое, например, подписать так, что бы был кернел?

Acid_Jack
18.01.2011, 16:29
Ditemzy, тут уж я не в курсе, нужен ли для загрузки iso user level или kernel level.
Но радует тот факт, что для того, чтобы запретить запуск на оф. прошивке контент, подписанный данными ключом, сони придётся менять сам кирк. А это сродни выпуску новой версии PSP с новым железом.
Хотя чем чёрт не шутит, может в кирке заложена возможность смены ключей подписывания и дешифровки программным способом.

frostegater
18.01.2011, 16:36
Acid_Jack, если в подписаной программе найти эксплоит, дающий доступ к kernel правам(как в случае например с TN exploit) тогда припомощи написания специальных HEN модулей можно запустить ISO loader. Iso loader так сказать при запуске пишет модули запуска ISO в NAND и ISO запускается, а если ты хочешь запускать из xmb игры то надо создать совместимые с 6.20 модули отображения

foxbreak
18.01.2011, 16:44
Помнится еще при первой публикации ключей, великий и всевидящий Foxbreak предсказывал выход некой программки (http://wololo.net/talk/viewtopic.php?f=5&t=1899) :dance:

Acid_Jack
18.01.2011, 16:46
foxbreak, 27-й пост.
Народ, вы что, совсем тему не читаете?

frostegater
18.01.2011, 16:49
Эта подпись почти не отличается от HBL по правам и режиму

lex3a
18.01.2011, 16:53
Я читал как раз таки. И даже пользовался этим prxEncrypter.

Да, признаю. С концом я немного погорячился. Заменил Game Over на простой Fail, лол.

foxbreak
18.01.2011, 17:19
Acid_Jack, Мой пост был нацелен не на восхваление программки, а на восхваления меня, мол "I told you so! I told you so!"

Ins|der
18.01.2011, 19:09
Ins|der, ну так в принципе могли бы и оф сдк

резонно) но вроде и без него неплохо люди справляются

Ins|der добавил 18.01.2011 в 19:09
Но радует тот факт, что для того, чтобы запретить запуск на оф. прошивке контент, подписанный данными ключом, сони придётся менять сам кирк.

то есть убрать поддержку всех официальных приложений, подписанных им? это негуманно =)

ErikPshat
18.01.2011, 20:15
А это что за лабуда?

// 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

#include "tools.h"
#include "types.h"

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include <gmp.h>

static int keyid = -1;

static u8 *ptr1 = NULL;
static u8 *ptr2 = NULL;

static u16 type;
typedef struct {
u16 flags;
u32 ****_offset;
u64 info_offset;
u32 app_type;
u64 filesize;
u64 header_len;
} fileinfo;

static fileinfo info1;
static fileinfo info2;

static struct keylist *klist = NULL;

static struct keylist *self_load_keys(fileinfo* info)
{
enum sce_key id;

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);
}

return keys_get(id);
}

static void read_self_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->****_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
info->info_offset = be64(ptr + 0x28);

info->app_type = be32(ptr + info->info_offset + 0x0c);

klist = self_load_keys(info);
}

static void read_pkg_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->****_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);

klist = keys_get(KEY_PKG);
}

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");

ecdsa_set_pub(klist->keys[keyid].pub);
}

static void verify_signature(u8* ptr, fileinfo* info, u8* hash, u8** s, u8** r)
{
u64 sig_len;

sig_len = be64(ptr + info->****_offset + 0x60);
*r = ptr + sig_len;
*s = *r + 21;

sha1(ptr, sig_len, hash);

printf("Signature\n");
if (ecdsa_verify(hash, *r, *s))
printf(" Status: OK\n");
else
printf(" Status: FAIL\n");
}

static void load_num(mpz_t n, u8* un)
{
char buffer[0x100];
char* ptr = buffer;
int i;
for (i = 0; i < 21; i++) {
sprintf(ptr, "%02x", un[i]);
ptr += 2;
}
mpz_set_str(n, buffer, 16);
}

static char* calculate_private_key(u8* us1, u8* us2, u8* uz1, u8* uz2, u8* un, u8* ur)
{
mpz_t s1, s2, z1, z2, n, r, k, dA;
mpz_inits(s1, s2, z1, z2, n, r, k, dA, NULL);
load_num(s1, us1); load_num(s2, us2); load_num(z1, uz1); load_num(z2, uz2); load_num(n, un); load_num(r, ur);

mpz_sub(z2, z1, z2);
mpz_sub(s2, s1, s2);
mpz_invert(s2, s2, n);
mpz_mul(k, z2, s2);
mpz_mod(k, k, n);

mpz_mul(s2, s1, k);
mpz_sub(s2, s2, z1);
mpz_invert(r, r, n);
mpz_mul(dA, s2, r);
mpz_mod(dA, dA, n);

// printf("k: %s\n", mpz_get_str(NULL, 16, k));
return mpz_get_str(NULL, 16, dA);
}

int main(int argc, char *argv[])
{
if (argc != 3)
fail("usage: scesekrit filename1 filename2");

ptr1 = mmap_file(argv[1]);
ptr2 = mmap_file(argv[2]);

type = be16(ptr1 + 0x0a);
if (type != be16(ptr2 + 0x0a))
fail("Files must be the same type");

if (type == 1) {
read_self_header(ptr1, &info1);
} else if(type == 3) {
read_pkg_header(ptr1, &info1);
} else
fail("Unknown type: %d", type);

if ((info1.flags) & 0x8000)
fail("devkit file; nothing to verify");

if (klist == NULL)
fail("no key found");

decrypt(ptr1);

if (type == 1) {
read_self_header(ptr2, &info2);
} else if(type == 3) {
read_pkg_header(ptr2, &info2);
} else
fail("Unknown type: %d", type);

if ((info2.flags) & 0x8000)
fail("devkit file; nothing to verify");

if (klist == NULL)
fail("no key found");

decrypt(ptr2);

u8* s1;
u8* s2;
u8 z1[21];
u8 z2[21];
u8* r1;
u8* r2;
u8 ec[21];
u8 n[21];
z1[0] = 0;
z2[0] = 0;

ecdsa_get_params(klist->keys[keyid].ctype, ec, ec, ec, n, ec, ec);

printf("%s ", argv[1]);
verify_signature(ptr1, &info1, z1 + 1, &s1, &r1);
printf("%s ", argv[2]);
verify_signature(ptr2, &info2, z2 + 1, &s2, &r2);

if (memcmp(r1, r2, 21))
fail("Both files must share the same r signature value.");

const char* dA = calculate_private_key(s1, s2, z1, z2, n, r1);

int len = strlen(dA);
int i;
printf("Private Key: ");
for (i = len / 2; i < 21; i++)
printf("00");
printf("%s\n", dA);

return 0;
}Source (http://pastie.org/1425653)

lex3a
18.01.2011, 20:34
А это что за лабуда?

// 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

#include "tools.h"
#include "types.h"

#include <stdio.h>
#include <string.h>
#include <assert.h>
#include <stdlib.h>
#include <gmp.h>

static int keyid = -1;

static u8 *ptr1 = NULL;
static u8 *ptr2 = NULL;

static u16 type;
typedef struct {
u16 flags;
u32 ****_offset;
u64 info_offset;
u32 app_type;
u64 filesize;
u64 header_len;
} fileinfo;

static fileinfo info1;
static fileinfo info2;

static struct keylist *klist = NULL;

static struct keylist *self_load_keys(fileinfo* info)
{
enum sce_key id;

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);
}

return keys_get(id);
}

static void read_self_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->****_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);
info->info_offset = be64(ptr + 0x28);

info->app_type = be32(ptr + info->info_offset + 0x0c);

klist = self_load_keys(info);
}

static void read_pkg_header(u8* ptr, fileinfo* info)
{
info->flags = be16(ptr + 0x08);
info->****_offset = be32(ptr + 0x0c);
info->header_len = be64(ptr + 0x10);
info->filesize = be64(ptr + 0x18);

klist = keys_get(KEY_PKG);
}

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");

ecdsa_set_pub(klist->keys[keyid].pub);
}

static void verify_signature(u8* ptr, fileinfo* info, u8* hash, u8** s, u8** r)
{
u64 sig_len;

sig_len = be64(ptr + info->****_offset + 0x60);
*r = ptr + sig_len;
*s = *r + 21;

sha1(ptr, sig_len, hash);

printf("Signature\n");
if (ecdsa_verify(hash, *r, *s))
printf(" Status: OK\n");
else
printf(" Status: FAIL\n");
}

static void load_num(mpz_t n, u8* un)
{
char buffer[0x100];
char* ptr = buffer;
int i;
for (i = 0; i < 21; i++) {
sprintf(ptr, "%02x", un[i]);
ptr += 2;
}
mpz_set_str(n, buffer, 16);
}

static char* calculate_private_key(u8* us1, u8* us2, u8* uz1, u8* uz2, u8* un, u8* ur)
{
mpz_t s1, s2, z1, z2, n, r, k, dA;
mpz_inits(s1, s2, z1, z2, n, r, k, dA, NULL);
load_num(s1, us1); load_num(s2, us2); load_num(z1, uz1); load_num(z2, uz2); load_num(n, un); load_num(r, ur);

mpz_sub(z2, z1, z2);
mpz_sub(s2, s1, s2);
mpz_invert(s2, s2, n);
mpz_mul(k, z2, s2);
mpz_mod(k, k, n);

mpz_mul(s2, s1, k);
mpz_sub(s2, s2, z1);
mpz_invert(r, r, n);
mpz_mul(dA, s2, r);
mpz_mod(dA, dA, n);

// printf("k: %s\n", mpz_get_str(NULL, 16, k));
return mpz_get_str(NULL, 16, dA);
}

int main(int argc, char *argv[])
{
if (argc != 3)
fail("usage: scesekrit filename1 filename2");

ptr1 = mmap_file(argv[1]);
ptr2 = mmap_file(argv[2]);

type = be16(ptr1 + 0x0a);
if (type != be16(ptr2 + 0x0a))
fail("Files must be the same type");

if (type == 1) {
read_self_header(ptr1, &info1);
} else if(type == 3) {
read_pkg_header(ptr1, &info1);
} else
fail("Unknown type: %d", type);

if ((info1.flags) & 0x8000)
fail("devkit file; nothing to verify");

if (klist == NULL)
fail("no key found");

decrypt(ptr1);

if (type == 1) {
read_self_header(ptr2, &info2);
} else if(type == 3) {
read_pkg_header(ptr2, &info2);
} else
fail("Unknown type: %d", type);

if ((info2.flags) & 0x8000)
fail("devkit file; nothing to verify");

if (klist == NULL)
fail("no key found");

decrypt(ptr2);

u8* s1;
u8* s2;
u8 z1[21];
u8 z2[21];
u8* r1;
u8* r2;
u8 ec[21];
u8 n[21];
z1[0] = 0;
z2[0] = 0;

ecdsa_get_params(klist->keys[keyid].ctype, ec, ec, ec, n, ec, ec);

printf("%s ", argv[1]);
verify_signature(ptr1, &info1, z1 + 1, &s1, &r1);
printf("%s ", argv[2]);
verify_signature(ptr2, &info2, z2 + 1, &s2, &r2);

if (memcmp(r1, r2, 21))
fail("Both files must share the same r signature value.");

const char* dA = calculate_private_key(s1, s2, z1, z2, n, r1);

int len = strlen(dA);
int i;
printf("Private Key: ");
for (i = len / 2; i < 21; i++)
printf("00");
printf("%s\n", dA);

return 0;
}Source (http://pastie.org/1425653)

http://psx-scene.com/forums/f6/scekrit-tool-obtaining-private-sony-keys-74343/

Подписывальщик PS3 приложений, точнее не совсем. Просто получает волшебный ключ, которым можно потом подписать свое приложение для PS3.

ToTAL_SUiCiDE
18.01.2011, 20:43
Ins|der, возможно официальные наработки сони избавили бы от массы проблем, связаных с недопониманием различных библиотек) В любом случае это дало бы толчок в разработке, если бы они сделали все софтовое наполнение опенсорсным. Но это врятли будет;)

akela1979
18.01.2011, 23:15
http://img203.**************/img203/2104/signmeu.jpg
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.
источник (http://www.pspgen.com/forums/post2328128.html#p2328128)

frostegater
19.01.2011, 07:16
akela1979, Ни черта он не подписывает!
Zer01ne (aka Dridri85) всегда хотел быть впереди всех.
Поэтому и славился alpha/beta версиями :D

Wes64
19.01.2011, 13:21
akela1979, Ни черта он не подписывает!
Zer01ne (aka Dridri85) всегда хотел быть впереди всех.
Поэтому и славился alpha/beta версиями :D

Угу она пишет твоя прога типа в такой папке а там пусто :)

ErikPshat
19.01.2011, 14:06
Вот рабочая прога: carlosgs updated PSCRYPTER to v2.0 here (http://wololo.net/talk/viewtopic.php?f=2&t=1916&start=0)

http://www.megaupload.com/?d=5CWJAJTE

Я сам ещё не пробовал, но вот этот список внушает доверие: http://endlessparadigm.com/forum/showthread.php?tid=25707

dn3d
19.01.2011, 14:50
Вот рабочая прога: carlosgs updated PSCRYPTER to v2.0 here (http://wololo.net/talk/viewtopic.php?f=2&t=1916&start=0)

http://www.megaupload.com/?d=5CWJAJTE

Я сам ещё не пробовал, но вот этот список внушает доверие: http://endlessparadigm.com/forum/showthread.php?tid=25707

Я уже потестил ее... Запустил 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 же по полочкам расписал процесс подписывания
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
В простом случае 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
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 (http://www.pspx.ru/forum/showthread.php?p=932630#post932630) )))

обработать его 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
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
С предыдущим сообщением не клеить!

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

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

ErikPshat
19.01.2011, 17:22
Yoti, вот эта программа всё то-же самое делает по пунктам, только в автоматическом режиме: http://www.pspx.ru/forum/showpost.php?p=932604&postcount=48

Для PRX нужна другая инструкция: http://wololo.net/talk/viewtopic.php?f=5&t=1381&start=250#p21323
Вот я ща сижу мучаю этот EmitStaticStubs.exe.
Он выдёргивает их PRX:

data.h - это просто разложенный побайтно elf-файл.
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
что вы здесь запёрлись
переноси или отдели посты.
вот эта программа всё то-же самое делает
Нафиг homebrew.
Для 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
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.

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

Yoti
19.01.2011, 18:32
Только почему-то при компиляции Build, твой статический даже PRX не выдал
А ты расшифровку prx вспомни =) В нём вся динамика и заключена. Вся разница в этих двух прожках - в одном (!) параметре в makefile - BUILD_PRX = 1. В статике он закомментирован =)

попробуй из подписанного файла извлечь DATA.PSP и декриптовать его через PRXDecrypter
Пока ещё ничего не делал. Займусь минут через 20.


Ты уже понял, почему изначальный 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
P.S. Мне ты так в личку и не ответил на вопрос о gzip =)Эмм, не помню, о чём это. Повтори ещё раз...

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

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

Yoti
20.01.2011, 13:39
Эмм, не помню, о чём это. Повтори ещё раз...
Где там размер то прячется, если заголовка prx нет? Я что-то так в спецификации и не нашёл, к своему удивлению.

Как можно выводить на экран текст -> в нужное для меня место?
Думаю что-то должно быть похоже на такое: printf(x,y, "Hello World"; 140,96)
Функция - тут (http://www.pspx.ru/forum/showpost.php?p=893314&postcount=1).
Просто код:

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 (http://wololo.net/wagic/2011/01/20/psp-official-firmware-6-37-incoming/) пишут что новая офф прошивка намечается

Setsuna-ch4n
20.01.2011, 16:33
6.37 чтоли?
PSP 1-3k (http://du01.psp.update.playstation.org/update/psp/image/us/2011_0120_5a21c511c90ed765747c43a9779f7a4b/EBOOT.PBP?0)
PSP Go (http://du01.psp.update.playstation.org/update/psp/image2/us/2011_0120_d403726b95c3577c33195e491cd8c8a1/EBOOT.PBP)
сорь за оффтоп

Wes64
20.01.2011, 16:39
6.37 чтоли?
PSP 1-3k (http://du01.psp.update.playstation.org/update/psp/image/us/2011_0120_5a21c511c90ed765747c43a9779f7a4b/EBOOT.PBP?0)
PSP Go (http://du01.psp.update.playstation.org/update/psp/image2/us/2011_0120_d403726b95c3577c33195e491cd8c8a1/EBOOT.PBP)
сорь за оффтоп

Так я уже поставил, хен 6.35pro подписанный не работает :)

Setsuna-ch4n
20.01.2011, 16:54
Но подписанные приложения вроде как запускаются (сам не проверял)

ErikPshat
20.01.2011, 17:51
pspDebugScreenSetXY(2, 2);
// координаты не в пикселях, а в символах дебаг-шрифта, начиная с 0
pspDebugScreenPrintf("Hello World");Спасибо! Применил по назначению: http://www.pspx.ru/forum/showthread.php?t=89959
Пойдёт в кладовку знаний!

По поводу размера GZIP, сам не в курсе. Собсно конец архива видно невооруженным глазом. Причём можно проверить по последним 4-ём байтам размер разархивированного архива.

Но вот применить в программе автоопределения, даже не знаю как.

Yoti
20.01.2011, 22:59
flashcore,
а куда они денутся то? Конечно, работают. Это вам не юзер моуд эксплоит!

Setsuna-ch4n
21.01.2011, 09:16
Читай мой пост выше, в сони не такие идиоты, чтоб руки опускать

ErikPshat
22.01.2011, 02:35
PRX Encrypter GUI
UO_PSCrypter (V.2.0 REV.A)


http://www.rinnegatamante.eu/

Yoti
22.01.2011, 06:32
flashcore,
в твоём сообщении до того, на которое я ответил, всего лишь две ссылки на официальные прошивки. Вообще непонятно, к чему ты на него сослался.

ErikPshat
22.01.2011, 06:41
Yoti, можешь объяснить, как TN-C подписанный получился на 420 кб?

Почему он не больше 5 Мб? )))

Yoti
22.01.2011, 06:48
ErikPshat,
я его загрузил менее 5 минут назад. Вообще в последнее время сплю днём. Пока ничего не смотрел; как будет информация - напишу.

Setsuna-ch4n
22.01.2011, 12:21
Нет, еще выше, этот (http://www.pspx.ru/forum/showpost.php?p=932949&postcount=78)

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

Stivenson
22.01.2011, 20:35
Круто, ChickHEN R2 подписали. Теперь нет мучений с запуском виртуальных прошивок.

Кстати, получается, что непрошивайки теперь станут прошивайками? Или я ошибаюсь?

DIIGMO
22.01.2011, 20:36
Кстати, получается, что непрошивайки теперь станут прошивайками? Или я ошибаюсь?
С чего бы это?

Stivenson
22.01.2011, 20:41
С чего бы это?

Ну так теперь можно подписать любую кастом-прошивку раз ключи утекли. И PSP не отличит ее от родной и прошьет за милую душу.
Разве не так?

P.S. Мне нравится, после слета прошивки тупо запускаю подписанный ChickHEN R2 и у меня сразу грузится мой GEN-C. Никакие картинки больше не нужны. Лафа. Одно плохо, что новых игр мы теперь наверно не увидим.

DIIGMO
22.01.2011, 20:51
Stivenson, есть ещё вот такая мелочь
http://pspfaqs.ru/faqs/493-psp-hen-devhook-ipl-pre-ipl.html
можешь прочитать всё, но тебя должно интересовать pre IPL и ниже.

Stivenson
22.01.2011, 20:59
Stivenson, есть ещё вот такая мелочь
http://pspfaqs.ru/faqs/493-psp-hen-devhook-ipl-pre-ipl.html
можешь прочитать всё, но тебя должно интересовать pre IPL и ниже.

pre IPL как я понял проверяет подпись прошивки, чтобы засечь попытку запуска неподписанной.

Не знаю точно какие ключи утекли, но если утек приватный ключ, которым Сони подписывает свои прошивки, то pre IPL уже никак не отличит неродную прошивку от фирменной.

DIIGMO
22.01.2011, 21:05
Мда, тут, можно сказать, хомки подписывать(точнее которые будут нормально работать после подписи) можно только те, которые соответствуют некоторым условиям и, что немаловажно, работают только в user mode. А у тебя уже прошивки с обходом проверки ipl мерещатся.
Если это всё так просто, то где подписанные прошивки-то?

Stivenson
22.01.2011, 21:13
Если это всё так просто, то где подписанные прошивки-то?

Ну как - вот читаю 6.20 TN-C HEN Released. Now signed, runs from XMB! (http://pspslimhacks.com/6-20-tn-c-released/)

Signed 6.35 Pro (HEN) Released! Run 6.35 Pro HEN from the XMB! (http://pspslimhacks.com/signed-6-35-pro-hen-released-run-hen-from-the-xmb/) там же.

Пока как я понимаю виртуалки, но уже подписанные.

P.S. Курицу-то тоже подписали, а она я сомневаюсь что в User-mode работает.

DIIGMO
22.01.2011, 21:24
Stivenson, это такая шутка? Хены 6.ХХ вообще-то из хбл запускались.

Пока как я понимаю виртуалки, но уже подписанные.

ХЕН -ЭТО НЕ ВИРТУАЛЬНАЯ ПРОШИВКА

а она я сомневаюсь что в User-mode работает.

Даю наводку - ты из хбл смог бы виртуальную прошивку запустить или флешер?

Stivenson
22.01.2011, 21:27
Stivenson, это такая шутка? Хены 6.ХХ вообще-то из хбл запускались.


ХЕН -ЭТО НЕ ВИРТУАЛЬНАЯ ПРОШИВКА


Даю наводку - ты из хбл смог бы виртуальную прошивку запустить или флешер?

Уже могу. Курицу-то подписали.
У нас на сайте это есть или нет не знаю.
Вот тут описание - http://www.atmaxplorer.com/2011/01/install-signed-5-03-5-03-gen-c-on-your-psp/

P.S. Причем раньше после курицы надо было запускать GEN-C, теперь при слете прошивки достаточно запустить просто подписанную курицу (берем тут - для PSP-2000 (http://uploading.com/files/38f425ab/5.03%2BHen%2B2000.zip/), для 3000/Go (http://uploading.com/files/me13m8dd/5.03%2BHen%2B3000v4.zip/)) как обычную игру из меню и прошивка GEN-C тут же возвращается. Удобно. Папку GEN-C я с карты стер - больше не нужна.