rustot, привет! Хорошая работа.
Хотя нет. Ниасилил. Поставил Strawberry, сохранил исходник как IPLDecrypt.pl. Запустил батник из этой папки с командой C:/strawberry/perl/bin/cpan Math::Random::MT Что-то там долго компилилось, но потом непонятно что вышло ))). В папке span образовалась куча файлов, но не имеющих отношения к программе. А как экзешник скомпилить, я так и не въехал. Залей лучше на www.slil.ru |
бинарник залью вечером, он дома. компилить ничего не нужно, cpan поставил недостающую либу и теперь достаточно выполнить "perl IPLDecrypt.pl part2_nandipl_01g.bin main.bin", при этом psp_bios.bin должен лежать в текущей папке
кстати psp_bios.bin оказывается и есть весь pre-ipl, а не его кусок. там все, и инит оборудования и загрузка ipl с nand или стика и его декриптовка и запуск. а ipl поддерживает две версии pre-ipl, старый который есть у нас и новый, который еще никто не добыл. "if( $sum == ord(substr($ipl,0x28A0)) ) {" как раз патчит ключ в случае если pre-ipl оказался не той версии rustot добавил 16-02-2010 в 21:23 http://slil.ru/28660285 2 декриптованных модуля, второй требует дополнительной декриптовки kirk rustot добавил 16-02-2010 в 21:36 ErikPshat, сможешь декриптовать на psp? это тот же код которым например ipl декриптуется, команда №1, ключи не нужны |
Вложений: 2
Цитата:
Щас попробую дальше... А нельзя просто выдернуть декриптованный IPL полностью? Кстати, что-то в main.bin не нашёл в прямом виде ключей. Слышал ещё про payload.bin, который находится тоже упакованный в main.bin и в котором эти ключи уж точно содержатся. Просто я исследовл main.bin от 2.00, и там ключи лежали на поверхности. Цитата:
Я-же всё-таки не программист, а просто любитель, поэтому мне не совсем понятны команды №1 и т.п. Вот во вложении Пёрл-PC-декриптер. Декриптует он part2_nandipl_0Xg.bin, извлечённый и частично декриптованный (1-ая секция) PSARDumper-ом или программой "IPL Decrypt Sample" от SilverSpring-а. |
Цитата:
как именно - я не очень в курсе, должны быть какие-то готовые тулзы. код должен выглядеть примерно так: Код:
u8 buf[0x80000]; |
В упоминавшемся чуть выше IPLSDK есть функция
int pspKirkProc(void *dst,u32 dsize,void *src,u32 ssize,u32 cmd); которая делает приблизительно тоже самое. Может быть просто сделать IPL для мультилоадера, который сделает все необходимые действия. |
Цитата:
в принципе на psp даже и декриптовать не надо, зная код можно брекпоинты в нужные места вставить и сдампить уже декриптованное из памяти. но только эти нужные места будут от версии к версии меняться |
Цитата:
|
Цитата:
|
Такс, что дальше?
|
Цитата:
Только я хз как его скармливать KIRK, полностью, кусками по 0x1000 байт, начиная сначала или со смещения 0x90 и т.п. |
Цитата:
rustot добавил 17-02-2010 в 22:12 это из обычного приложения можно делать, как psardumper, не в режиме загрузки ipl |
Вобщем я стал искать описание структуры PspKirkRegs и нашел у SilverSpring http://my.malloc.us/silverspring/200...ect-hw-access/
Там он декриптит с помощью KIRK блоками по 0x1000. |
Цитата:
|
А это что за KIRK Crypto Engine
|
kirk это и есть главная тайна psp, аппаратная криптовалка. и если часть команд у нее известно что делает и воспроизводима программно, лишь бы знать ключи, то команда №1 тайна за семью печатью, ключей не требует и работает только в одну сторону - на декриптование. а симметриная функция криптования доступна только сони. вот и получается, что декриптовать и посмотреть код от сони мы можем (при наличии ломаной psp для доступа к кирку) а вот собственный код закриптовать так, чтобы его поняла psp - не можем.
то что я выше в качестве примера привел и есть прямой доступ к кирку, KIRK_HW_REGISTER_ADDR там равен 0xBDE00000 |
Цитата:
Вот ещё инфу надыбал: http://silverspring.lan.st/NPSPTD_01.txt Это отсюда: http://www.lan.st/showthread.php?p=16132#post16132 Ага, вижу тебя там ) |
Цитата:
Вобщем код, для расшифровки я попробовал написать еще позавчера, но он как всегда не работает, а отладить/потестить мне нечем. Псплинк заставить работать у меня не получается. На файле который нужно расшифровать, моя psp просто выключается (не виснет как при косячном коде, а просто выключается, мгновенно) А править код SilverSpring во второй раз мне чот уже как-то =). |
stillllll, ну моя PSP полностью заряжена и ждёт указаний =)
Кстати, пробовал декриптить nandipl_01g.bin от 6.20 с помощью декриптера от СильверСпринга, то на выходе получается точно такой-же файл, как из PSARDumper-a part2_nandipl_01g.bin. Но вот nandipl_02g.bin и nandipl_03g.bin дампер Сильвера уже не берёт, выдаёт ошибку. Хотя PSARDumper выдаёт нормальный part2_nandipl_02g.bin, но вот part2_nandipl_03g.bin уже никто не даёт =) Пёрл 01g отлично дампит и 02g дампит. Сначала забыл расширение поменять. И ещё, смотрел я долго в main.bin на этот код, как будто он там зашифрован: Скрин |
Ну так что. Результаты уже есть и на этом остановились =)
И наверное они должны храниться в памяти друг за другом, а не затирать друг друга. Кстати, есть ещё такие проги "Kernel Damper Sample" из pspsdk и "DAMPKMEM" с исходниками от TiRaNiD. Причём первая работает и на 3.хх kernel и выводит мизер информации, а вторая работает только на 1.5 kernel и выводит кучу всякой инфы на экран. Скрины Например какой-то файл boot.bin (1Mb) и kmem.bin (4Mb). |
да, иметь полностью декриптованный ipl было бы хорошо.. его можно вручную загружать в нужной последовательности вместо зашифрованного и так загрузить прошивку. а потом уже патчить расшифрованный ipl легко и прочие файлы.
|
Текущее время: 15:14. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.