PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   EDecrypt v1.4 (https://www.pspx.ru/forum/showthread.php?t=85185)

mc707 03.12.2009 21:01

EDecrypt v1.4
 
Вложений: 2

Основан на исходных кодах PSARDumper.
Перекомпилено и оптимизовано мной.

Декриптует большинство загрузчиков от игр и prx-файлов.
Добавлено много ключей, многие благодаря ErikPshat. Умеет патчить под M33.

Функционал приближен к PRX Decryptor 2.3 by jas0nuk.
Умеет декриптовать файлы, объемом до 25M байт (Такие игры как Brainpipe).

Как использовать
================

1. Скопируйте папку EDecrypt в ms0:/PSP/GAME
2. Скопируйте закриптованные файлы в ms0:/enc/
3. Запустите EDecrypt v1.4.1 на PSP
4. Нажмите :cross: чтобы декриптовать файлы, :square: - чтобы декриптовать и пропатчить под м33, :circle: - чтобы выйти из хоумбрю
5. Скопируйте полученные файлы из ms0:/enc/done/ куда хотите.

История версий
==============
1.4.1
- добавлен ключ для тега 0хD91614F0 (Спасибо hrimfaxi за ключ)
- добавлена новая сигнатура для пропатчивания

1.4.0
- добавлен ключ для тега 0хD91613F0 (Спасибо hrimfaxi за ключ).

1.3.2*
- при неудачном выделении выходного буфера, EDecrypt пытается использовать небезопасный метод.
-- Это может привести к непредсказуемым ошибкам, но это лучше, чем ничего:)
--- Тестировалось на Фат и Слим с EBOOT.BIN (12MB) на:
--- Minna_no_Shiatsu_-_Itami_mo_Tsukare_mo_Sukkiri_JPN_PSP-NRP

1.3.1*
- добавлены новые сигнатуры для пропатчивания
- добавлено пропатчивание незашифрованных ELF
- добавлена распаковка незакриптованных файлов
- расширенная поддержка памяти, как следствие возможность раскриптовки файлов объемом до ~25 MB
- небольшие исправления и багфиксы ;)

1.3*
- добавлено много ключей
- добавлен ключ для тега 0хD91612F0
- пропатчивание под м33
- протоколирование в ms0:/enc/done/log.txt
- обработка множества файлов

1.2*
-добавлен ключ для тега 0хC0CB167C
-улучшена производительность и функционал

1.1*
- добавлены ключи от 6.0 FW

Todo лист
=========
1. Реорганизация исходников для избавления от pspdecrypt.prx
2. Криптование файлов
3. Возможно - пропатчивание проверки CFW

Скачать можно отсюда или из вложения.

Много благодарностей ErikPshat и двум моим коллегам с ревенга ( пополняемся=) ).

Спасибо всем за внимание. Жду багрепортов.

ErikPshat 03.12.2009 21:19

Wow! Огромная благодарность за работу!!!
Родина тебя не забудет!

Нужно ещё добавить, что декриптует Brainpipe и что там ещё...

Скрины
http://i060.radikal.ru/0912/b6/b2b5547b4c77.png

http://i019.radikal.ru/0912/e2/74f54cc5c663.jpg

http://i009.radikal.ru/0912/b6/b82330782d85.jpg

Brainpipe нормально декриптовался.
После декриптовки ещё пропатчил eboot.bin.patcher-ом, был найден и заменён 1 байт.
Снял File List, оптимизировал образ, удалив файлы прошивки, заменил EBOOT.BIN, вернул File List и сохранил в CSO.
Теперь наконец-то рабочий образ под 5.00М33/5.03GEN (14,7 МБ)

mc707 03.12.2009 21:49

Точно, спасибо, совсем забыл про Brainpipe... Добавлю в шапку как только наберется что еще добавить :)

Yoti 03.12.2009 22:55

Я проспал версии 1.0 и 1.1?! :-D

mc707 03.12.2009 23:00

они были исключительно приватные 0дэй)))

Yoti 04.12.2009 00:25

mc707,
ага, секретничаешь!!! ErikPshat это первым заметил)))

bondar 04.12.2009 00:29

Спасибо за проделанную работу!

Coby 04.12.2009 01:19

Puyo Puyo7 с 6.00 но он так и не декрептуется
http://s41.radikal.ru/i093/0912/f8/4c0dc0997eba.png

ErikPshat 04.12.2009 01:26

Coby, да. Там этот новый тег 6.хх 0хD91612F0 уже всех достал.
Я слышал, что FreePlay его разгадал, но от всех скрывает, хотя мастер фейков он ещё тот.

А может Геновцы тоже уже знают ключ к расшивровке этого тега, но держат тоже в секрете, т.к. они не зря намекают про GEN-D3 с возможностью декриптовать эти новые игры 6.хх.
Всё дело времени...

mc707 04.12.2009 01:39

Coby, я же написал в todo листе что еще нужно сделать, там этот тег указан :) . SilverSpring тоже пишет что нашел этот ключ, но никто не торопится его выкладывать... И кстати этот тег не одинок, есть еще какой-то 0x2E5ExxF0, но я его не встречал еще.

Если в GEN-D3 этот ключ будет, то я его оттуда выдерну ;)

ErikPshat 04.12.2009 01:44

mc707, кстати, в PSARDumper я видел в исходниках присутствует брутфорсинг, т.е. перебор ключевого кода. Но во время декриптовки, я не заметил, что он там задействуется. Может можно его как-то задействовать? Или там просто перебираются только известные ключи?

Если например задать определённый диапазон перебора или вообще бесконечный...

Вот ещё интересная цитата:
Цитата:

Сообщение от jas0nuk
PSP uses little endian format which is reverse byte order to big endian, used on x86/x64.

So D91612F0 appears as F01216D9

Keys are found in reboot.bin and mesg_led.prx - you find them by reversing the files in IDA which separates the actual code from the key arrays. Following the code logically allows you to find the keys for each tag.

То есть нужно дизасмить эти файлы: reboot.bin и mesg_led.prx
Насколько я понял всё-таки действительно все ключи расшифровки хранятся в этих файлах.

Как извлечь reboot.bin, если что, я писал вот здесь (пункты 5 и 6).

mc707 04.12.2009 07:49

ErikPshat, не видел в псардампере брутфорса... Да он и не очень-то эффективен: как видим длина одного ключа - 16 байт, один байт - значения от 0 до 255, т.е. 256, т.е. 2^8, таких байт 16, т.е. (2^8)^16=2^128 плюс скрамбл-код. На перебор уйдет больше 3 миллионов лет, даже если на 1 перебор использовать 1 такт процессора

Насчет reboot.bin и mesg_led.prx тоже видел сообщение, но пробовал mesg_led.prx из 6.10 выдернуть - он не декриптнулся. После этого бросил это дело, других проблем было :)
Надо будет еще взглянуть.

MelficeBFT 05.12.2009 01:14

К программе не относится конечно, но судя по скрину выше написано "readed", глагол неправильный, пишется "read". А вообще, так держать.

blueheaven 09.12.2009 22:59

Полезно ли это?
u32 tag_620 = 0xD91612F0; u8 keys_620[16] = { 0xE5, 0x89, 0xEE, 0x58, 0x5E, 0x30, 0xB5, 0xF3, 0x82, 0xA5, 0xD2, 0x9A, 0xD8, 0x6C, 0x0A, 0x71 };

ErikPshat 09.12.2009 23:07

blueheaven, сам нашёл или источник имеется?

blueheaven 09.12.2009 23:11

только что нашел его на maxconsole ...

ErikPshat 09.12.2009 23:18

blueheaven, здесь никто не запрещает давать ссылки на источник:
http://www.maxconsole.net/forums/sho...85#post1193985
http://www.pspgen.com/forums/post198...2b0b6#p1989956

Цитата:

Сообщение от ShadowInfinity
Picked this up somewhere...

Код:

u32 tag_620 = 0xD91612F0; u8 keys_620[16] =
{
 0xE5, 0x89, 0xEE, 0x58, 0x5E, 0x30, 0xB5, 0xF3, 0x82, 0xA5, 0xD2, 0x9A, 0xD8, 0x6C, 0x0A, 0x71
};

Think it's legit?


lex3a 10.12.2009 00:01

Шкатулка раскрыта? Ждем версии 1.3 :)

ErikPshat 10.12.2009 00:51

Это как раз тот тег 0xD91612F0, из-за которого игры нового света не декриптятся.

lex3a 10.12.2009 02:48

Можно EBOOT.BIN с этим тегом?
Хочу просто увидеть работает ли мой компил с этим кодом.

ErikPshat 10.12.2009 08:04

lex3a, да собсно вот что получается.
Пытался EBOOT.BIN декриптить от "James Cameron's Avatar - The Game.iso":

http://i028.radikal.ru/0912/24/a9e0761a95a5.png

Вроде ключик правильно вставил, а при компиляции там одно предупреждение выползло, но скомпилировалось.
Так что думаю или ключик не правильный, или я что-то нахимичил.
Придёт mc707 и разложит всё по полочкам ))).

Я просто неправильно тебя понял сначала, думал ты просишь EBOOT.PBP сконверченный с новым ключём )))
Сам только-только игру нашел и скачал, чтобы проверить.

А EBOOT.BIN вот, бери: http://slil.ru/28321591

Yoti 10.12.2009 10:05

ErikPshat,
архивируй, млин. Я бы проверил...

ErikPshat 10.12.2009 10:10

Держи в зипе EBOOT.BIN: http://slil.ru/28321811

Yoti 10.12.2009 10:36

Адд: имплифик декларейшен при компиле оригинала тоже есть, но это фигня

Yoti добавил 10-12-2009 в 10:36
Адд: что-то в архиве он меньше не стал... Ну его нафиг!
ErikPshat,
ты уверен, что code for scramble именно 0x5d?

ErikPshat 10.12.2009 10:40

Цитата:

Сообщение от Yoti (Сообщение 850329)
Адд: имплифик декларейшен при компиле оригинала тоже есть, но это фигня

Вот-вот. Только откуда эта ошибка? И как её вылечить? Типа неявное указание функции...
Хотя это даже не ошибка, а предупреждение. Так что можно закрыть глаза.

По поводу кода 5D фиг знает. Смотрю у всех последних файлов он такой. А как его можно вычислить?

Хотя нет. Скрэмблер 5D правильный вероятно, иначе выскочила бы ошибка. Там эти ошибки комментируются.

ErikPshat 10.12.2009 14:53

mc707 сделал декриптовку только на *.BIN. Нужно добавить код, чтобы ещё *.PRX проверялись. Ведь BIN и PRX - это фактически все они PRX-ы.
Как это лучше сделать?

P.S. ща отосплюсь, а потом разложу по полочкам. А вы пока кумекайте ))).

dimok135 10.12.2009 18:36

ErikPshat, Если расшифруешь EBOOT.BIN и PRX от James Cameron's Avatar, выкладывай всё пожалуйста.

mc707 10.12.2009 20:57

Цитата:

Сообщение от blueheaven (Сообщение 850257)
Полезно ли это?
u32 tag_620 = 0xD91612F0; u8 keys_620[16] = { 0xE5, 0x89, 0xEE, 0x58, 0x5E, 0x30, 0xB5, 0xF3, 0x82, 0xA5, 0xD2, 0x9A, 0xD8, 0x6C, 0x0A, 0x71 };

Эта информация была бы архиполезна, если бы это был верный ключ. А на самом деле скорее всего дезинформация. Я его проверил в тот же день, когда на максе его написали. Не могу сказать, по поводу правильности scramble-кода 0x5D, логично что должен использоваться он же. Хотя может ключ и верный, но без scramble-кода бесполезен. Можно попробовать подобрать его, но времени нет... И так мимо пробегал - увидел-ответил. Буду свободен минимум в вск.

Цитата:

Сообщение от ErikPshat (Сообщение 850393)
mc707 сделал декриптовку только на *.BIN. Нужно добавить код, чтобы ещё *.PRX проверялись. Ведь BIN и PRX - это фактически все они PRX-ы.
Как это лучше сделать?

В main/main.c есть строчка
Код:

// reading file
int ret = ReadFile("ms0:/EBOOT.BIN", 0, g_dataOut2);

Т.е. жестко прописано открывать EBOOT.BIN. Можете поменять на поиск всех файлов в какой-нибудь папке типа enc, как в prxdecrypter, это не очень сложно.

Да, и кстати...
Edecrypt выдает ошибку cbDecrypted < 0. Подправив вывод значения cbDecrypted на точное получил cbDecrypted = -8, т.е. ошибка происходит из-за неправильного вычисления sha-1 (это может произойти только при неправильном ключе или scramble-коде) на месте
Код:

/* sha-1 */
if (sceUtilsBufferCopyWithRange(outbuf, 3000000, outbuf, 3000000, 0x0B) != 0)
...


Yoti 10.12.2009 23:42

%src%/main/main.c
Код:

293: printf("Decrypt FAILED! cbDecrypted < 0.\n");
-меняем на-
293: printf("Decrypt FAILED! cbDecrypted %i.\n",cbDecrypted);

Компилиццо норм, проверять лень)

Yoti добавил 10-12-2009 в 23:38
ErikPshat,
наплюнь на имплификт, у меня в ЧИ тоже такая фигня при вызове main() :-D

Yoti добавил 10-12-2009 в 23:42
Осталось написать брутер на 256 значений скрэмблера)))

ErikPshat 11.12.2009 00:32

Цитата:

Сообщение от Yoti (Сообщение 850587)
Осталось написать брутер на 256 значений скрэмблера)))

Вот-вот, я тоже про это хотел сказать. Т.к. вполне возможно, что ключ правильный, раз его кто-то откуда-то вытащил и выложил.

То есть, нужен вариант, что бы вписать новый ключ, например этот key_620, и Скрамблер чтобы на него перебирался по очереди от 00 до FF.

Это конечно можно всё вручную перебрать, можно вообще 256 строк с одним и тем-же ключём воткнуть, только с пошаговыми значениями скрамблера )).

Как можно сделать, чтобы подставлялось по очереди значение, а после проверки каждого, цикл повторялся со следующим, а по достижения FF, чтобы программа продолжала выполнение далее?

В батнике на компе я это за 5 минут накалякаю, а вот в С++ я пока тяжело ориентируюсь.

ErikPshat 11.12.2009 00:41

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

Давайте ребятки, какие ещё будут исправления, дополнения.
К приходу mc707 надеюсь полный список будет готов, хотя он и сам наверное уже всё нашел ))).

Не знаю, стоит ли в общий доступ всё выкладывать...

Acid_Jack 11.12.2009 01:17

Цитата:

Сообщение от ErikPshat (Сообщение 850604)
Не знаю, стоит ли в общий доступ всё выкладывать...

простым смертным исходники вроде как и не нужны
нас бы вполне устроила новая версия декриптера

Yoti 11.12.2009 03:02

ErikPshat,
1. Попытался найти место куда бы приткнуть цикл - не нашёл. За бутылкой не пошёл, ибо учеба изрядно пообкусала свободное время.
2. Как соберёшь табличку ключей/скрэмблов аттачни в архиве, можно запароленном. Мало ли чего...

ErikPshat 11.12.2009 08:49

mc707, спасибо! Приблизительно это и ожидал.

В общем я уже тут как рыба в воде ))). Немного разобрался.
Мне кажется, что лучше кидать файлы не в корень, а в папку "enc", т.к. она уже существует у многих, кто часто что-то декриптует, а создавать дополнительно под другим именем - лишний бардак. Хотя Джейсон может заволноваться, что его папку используем, тогда в таком случае можно назвать к примеру "Decrypt" )))

Заменил этои связанные коды:
Код:

int mode=0, s;
        char cNew[16] = "ms0:/EBOOT.BAK";
        char cOld[16] = "ms0:/EBOOT.BIN";
        u32 tag;

Код:

// renaming old file
if(sceIoRename(cOld, cNew) < 0)
{
ErrorExit(5000, "Unset read-only attribute from file %s.\n", cOld);
}

// saving file
if (WriteFile(cOld, pbToSave, cbToSave) != cbToSave)

На несколько другие:
  1. Отказался от функции переименования.
  2. А отсюда от лишней строки в init: char cNew[16] = "ms0:/EBOOT.BAK";
Сделал так:
Код:

int mode=0, s;
        char cOld[23] = "ms0:/enc/DONE/EBOOT.BIN";
        u32 tag;

Код:

// creating directories
sceIoMkdir("ms0:/enc/DONE", 0777);

// saving file
if (WriteFile("ms0:/enc/DONE/EBOOT.BIN", pbToSave, cbToSave) != cbToSave)

Так думаю всё-таки наиболее практичнее и удобнее.
Правда логичнее ещё cOld переименовать в cNew там в двух местах или вообще от неё избавиться за ненадобностью ))).

Coby 11.12.2009 12:23

в Теккене же вроде тоже тэг 0xD91612F0? как же его декриптовали тогда?

maggot666x 11.12.2009 12:50

Цитата:

Сообщение от Coby (Сообщение 850655)
в Теккене же вроде тоже тэг 0xD91612F0? как же его декриптовали тогда?

prxdecriptor 2.3 легко справился с теккеном

lex3a 11.12.2009 15:53

Цитата:

Сообщение от Coby (Сообщение 850655)
в Теккене же вроде тоже тэг 0xD91612F0? как же его декриптовали тогда?

Просто их две версии. Одна из PSN, другая просто "leaked" .

ErikPshat 12.12.2009 00:19

Благодаря объяснениям mc707, дало толчёк повнимательнее взглянуть на код и разобраться во всех этих букавках и циферках.
Оказывается всё намного проще, чем я предполагал ))). Команды даже схожие с консольными. Так что в путь --->

Вот здесь у Джейсона стоит скрамблер 0x62:
Код:

{ 0x4C940AF0, keys330_3, 0x43 }
В общем вот уже точные данные...
  1. Найдено ровно 56 тегов и ровно 54 ключа к ним.
  2. Из них 40 тегов и 38 ключей уже имелось у mc707 и они все присутствуют у Дж. 2 тега ссылаются на одинаковые ключи.
  3. Итого 16 ключей ещё в копилку.

ErikPshat 12.12.2009 13:16

Yoti,
mc707,
Вы личку что-ли не проверяете?

Я когда открываю любую тему и если мне пришло сообщение в ЛС, то у меня сразу открывается окно с сообщением об ЛС и предлагает открыть в новом окне. Не понимаю, вы заходите на форум и не замечаете сообщений. Выставьте настройки в профиле, как надо.

И потом, когда на форуме кто-то отписывается в теме, то я тут-же получаю нотификацию на комп, т.е. появляется внизу экрана бегущая строка с письмами. Как-же вы следите за темами, где отвечали или задавали вопросы.

z4r4 12.12.2009 16:19

ErikPshat, ты можеш вставвить ключи в декриптор и сюда выложить?


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

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