Sunday, 2024-12-22
FuSa Project
[ New messages · Members · Forum rules · Search · RSS ]
  • Page 1 of 1
  • 1
Как разжимать модули PRX
ErikPshatDate: Wednesday, 2009-01-14, 1:17 AM | Message # 1
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Quote (Andy_maN)
Quote (lupus)
1.) Open the PRX with your favourite HexEditor
2.) Select only the data from (offset)0x150 till the end of the file
3.) Save the selected data as "filename.gz"
4.) Open and extract the *.gz-archive with 7-Zip or WinRAR and rename it to "filename.prx"
--> now you have the decompressed(decrypted) PRX

Интересная инструкция smile (можно и так в принципе распаковывать)
А по запаковке там что нибудь говорилось? (да кстати источник бы подкинул, мне интересно взглянуть)


Запаковать вручную так же просто как и распаковать.
После распаковки PRX получаем декриптованный файл ELF.
После чего его можно редактировать по своему усмотрению.
Отредактировав, опять сжимаем его в GZIP с нормальной степенью сжатия. Если сильно сжать, то потом может притормаживать.
Потом обратно вставляем его в исходник ~PSP в хексе начиная с 0х150.

Единственно, надо будет указать в заголовке (0х00-0х14F) некоторые хитрости:

Например, я взял знакомый вам ваш recovery.prx 5.00M33-3.

1. В offset: [0x28,0x29] - указывается размер декриптованного файла задом наперёд. Размер вашего декриптованного ELF-файла = f55e, значит в ofset: [0x28,0x29] записываем наоборот побайтово - 5ef5.

2. В offset: [0xB0,0xB1] - записан размер GZIP-архива (0х150 - до конца файла). Ваш размер GZ (0х150 - до конца файла) был 0х6357 (ставим курсор перед 0х150 и выделяем до конца Shift+END), поэтому у вас в данном месте offset: [0xB0,0xB1] было написано [5763].

3. В offset: [0x2C,0x2D] - указывается размер всего файла ~PSP. Выделяю весь файл CTRL+A, и вижу 0х64a7. Там пишется [a764].

Пример:

1. Я декриптовал ваш файл, получил ELF, посмотрел на него.
Назвал файл как Andy_maN_lupus_ErikPshat (без расширения) - для прикола. Но ничего не трогал, поэтому размер декриптованного файла не изменился.
Поэтому в offset: [0x28,0x29] менять ничего не придётся, там так и останется [5ef5].

2. Затем я его, не изменяя, заархивировал обратно в GZIP с помощью архиватора 7-Zip, но размер заархивированного файла изменится полюбэ по сравнению с тем, который мы изначально вырезали в *.GZ, как ни крути. Поэтому эта цифра самая важная.
Открываю заархивированный файл в хексе. Смотрю его размер - у меня 0х613b. Теперь копирую его весь и вставляю в ваш исходник от 0х150, предварительно удалив старый код с этого места.
В offset: [0xB0,0xB1] записываю новый размер [3b61].

3. Далее, в offset: [0x2C,0x2D] записываю размер всего файла. Выделяю весь полученный файл CTRL+A, вижу 0х628b.
Записываю в данное место [8b62].

Жму "Сохранить" и кидаю полученный recovery.prx в прошивку. О, чудо, всё работает как обычно!
Причем мой перекомпилированный файл получился меньше - 25227 байт, а ваш 25767 байт.

Только в коде файла добавилось название Gzip файла, по которому можно как бы идентифицировать автора, короче можно ставить свою подпись.
Это происходит, когда вы сжимаете файл в Gzip, то его название тоже записывается в код. Смотрите скрин ниже.
Надеюсь, что этой инструкцией хоть немного помог...

Для наглядности в аттаче 2 файла в архиве - ваш и мой, который тот же ваш smile

Attachments: recovery.rar (49.5 Kb)


Message edited by ErikPshat - Monday, 2008-10-27, 2:31 PM
 
lupusDate: Wednesday, 2009-01-14, 1:17 AM | Message # 2
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
зачем такие сложности?
ладно бы размер был большой... да и более простой способ есть - prx compressor

 
ErikPshatDate: Wednesday, 2009-01-14, 1:17 AM | Message # 3
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Quote (lupus)
зачем такие сложности?
ладно бы размер был большой... да и более простой способ есть - prx compressor

Так ведь PRX Compressor именно эти операции и выполняет, о которых я написал.

Но ещё, одно дело тупо ждать выпуска программулины, потом тупо жать кнопочки и получать результат, а другое дело - знать как устроен файл и уметь делать всё своими ручками, быстро и чётко.
Ученье - свет, Неученье - тьма.

Я просто поделился своими знаниями, пока жив. Надеюсь, что наверняка кто-то от этого станет чуточку умнее.
А я, в свою очередь, хочу научиться у Andy_maN работать с PSPSDK, если он научит.

 
lupusDate: Wednesday, 2009-01-14, 1:17 AM | Message # 4
Major
Group: Users
Messages: 87
Reputation: 1
Status: Offline
loading...
не, ну если я распаковал, то ессно понимаю, что проделав все в обратном порядке файл можно упаковать.
но все равно спасибо.

 
ErikPshatDate: Wednesday, 2009-01-14, 1:17 AM | Message # 5
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
Quote (lupus)
не, ну если я распаковал, то ессно понимаю, что проделав все в обратном порядке файл можно упаковать.

Ну я ессно понимаю, что в обратном порядке никтобы не собрал ))).

 
Andy_maNDate: Wednesday, 2009-01-14, 1:18 AM | Message # 6
General - lieutenant
Group: Administrators
Messages: 427
Reputation: 26
Status: Offline
loading...
ErikPshat, сам додумался али кто подсказал? smile
Да кстати
Quote
В offset: [0x28,0x29]

Этот шаг необязателен, а вот без 2х остальных, такой файл не запустится

Единственное что, самому это делать каждый раз надоедает, так что пришлось это дело автоматизировать happy

Quote (ErikPshat)
А я, в свою очередь, хочу научиться у Andy_maN работать с PSPSDK, если он научит.

В соседнюю тему - любые вопросы по этому делу
Как говориться: "You are welcome"

ЗЫ: (prx compressor - такого я что-то не припомню) например psp-pack не сжимает VSH модули т.е. recovery satelite и т.д.

ЗЗЫ:

Quote (ErikPshat)
а другое дело - знать как устроен файл и уметь...

Да да и еще раз да, целиком и полностью поддерживаю biggrin

 
ErikPshatDate: Thursday, 2009-01-15, 0:55 AM | Message # 7
Lieutenant
Group: Users
Messages: 43
Reputation: 3
Status: Offline
loading...
"Способ №2: Как назад запаковать и закриптовать любые декриптованные файлы PRX".

Ведь декриптованные файлы весят почти в два раза больше и отнимают много места во Flash0 или даже в CTF.

Нам понадобятся:

  • Универсальный Header (заголовок) ~PSP упаковочного файла PRX
  • Файл закладок HBK, содержащий всего три маркера, необходимых для криптовки. C этим форматом умеет работать HexWorksop.
СКАЧАТЬ.

1. Кастомный декриптованный PRX архивируем в GZip. Делать это умеет 7-Zip
Нажимаем правой кнопкой на PRX и выбираем "7-Zip -> Добавить к архиву...". В открывшемся окне архиватора выставляем "Формат архива: GZip".

2. Открываем архив (например vshmain.prx.gz) в Хекс-редакторе и записываем на бумажку его размер в байтах, который отображается в нижнем правом углу программы.

3. Так же открываем в Хекс-редакторе файл "Header PRX" из скачанного архива, выделяем весь код (CTRL+A) и вставляем этот код в начало открытого ранее архива *.gz в хексе.

4. Открываем файл закладок "Packing decripted PRX.hbk" и начинаем проставлять маркеры-криптографы...

5. Первый маркер - "Вписываем размер всего файла в байтах". Дважды щёлкаем в поле "Value" и вписываем размер всего файла, который мы видим в нижнем правом углу Хекс-редактора.

6. Второй маркер - "Вписываем размер GZIP-архива в байтах". Помните, мы записывали его на бумажку, так же вбейте сюда его размер. Если вы не записали его размер, то ваш архив должен сместиться на 0х150 (1F8B - спецификация Gzip). Выделив его от 0х150 и до конца (Shift+End), можете посмотреть размер выделения (Sel), переключившись в десятичный режим.

7. Третий маркер - "Вписываем размер декриптованного ELF-файла". Здесь вам понадобится размер того декриптованного файла, который вы ещё не успели заархивировать в GZip.

8. Всё, сохраняем готовый PRX. Перед вами упакованный и закриптованный, готовый к употреблению файл PRX.

Именно так, до недавнего времени, SONY упаковывала эти файлы, а считывать консоль их умеет и по сей день ))).

Декриптовать свои файлы вы теперь сможете так же легко, достаточно удалить заголовок (Header 0x00 - 0x150) и сохранить оставшуюся часть, как Gzip с расширением *.gz, ведь это и есть на самом деле ваш декриптованный PRX, заархивированный вами же в GZip. Потом просто извлечь из архива любым архиватором.
Точно так же можно декриптовать чужие кастомные файлы, даже если их упаковывали программами-энкрипторами, ведь по сути программа производит те же действия.

Единственное, не получится этим способом расжать любые файлы PRX последних прошивок Sony, т.к. способ паковки изменили, для этого воспользуйтесь новым PSARDamper.
А вот упаковать этим способом вы сможете любые декриптованные файлы PRX!!!


Message edited by ErikPshat - Thursday, 2009-01-15, 1:58 AM
 
  • Page 1 of 1
  • 1
Search:

Copyright MyCorp © 2024
Create a free website with uCoz