~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Делаем цветной шрифт в прошивках 3.52 М33
Как известно, за цвет шрифов в меню XMB отвечает файл
VSHMAIN.PRX, с которым нам и предстоит работать в данной статье.
Наша работа будет производится в 3 этапа:
I) Декриптовка
II) Кастомизация
III) Запаковка с новой криптовкой.
Предисловие (основные понятия)
Как известно, корпорация Sony в файлах прошивок до 2.6 вообще не применяла никакого компрессионного механизма.
Затем, начиная с прошивки 2.7, стал применяться механизм сжатия
ZLIB, который с лёгкостью распаковывался и запаковывался.
Но, начиная с версии прошивки 3.10, Sony изменила механизм компрессии и назвала его -
RLZ.
С этого момента в процессе кастомизации появились некоторые затруднения. Если распаковывать такие файлы прошивки удавалось, то обратно запаковать никак не получалось, поэтому приходилось назад запаковывать в старый формат
ZLIB или вообще не запаковывать, что приводило к значительному увеличению объёма файла.
Что же за такой хитрый формат
RLZ ?
Оказалось всё достаточно просто.
Файлы этого формата состоят из двух частей -
Заголовка - ~PSP и собственно самого
Исполняемого Кода.
1. Заголовoк - ~PSP - это та часть кода, которая содержит технические данные о файле и метод защиты (проверка целостности данных).
Находится в начале файла
от 0х0 до 0х14F включительно в 16-ричной системе исчисления и содержит ровно 150 Байт
2. Исполняемый Код - ELF - это самый секрет фирмы.
Находится после Заголовка, начиная
от 0х150 включительно и до конца файла.
Как оказалось - это попросту самодостаточный архив
GZIP, главная особенность которого - возможность работать с непрерывным потоком данных, упаковывая/распаковывая их «на лету». Такой архив легко можно распаковать и запаковать любым современным архиватором WinRar, 7Zip, ZIP и пр.
Архивный файл
GZIP должен иметь расширение
.gz на конце после точки.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I. Декриптовка
Декриптовка - это самый лёгкий и быстрый этап.
Для примера я взял файл
VSHMAIN.PRX из своей прошивки
3.52 M33-4, который лежит в папке:
flash0:\vsh\nodule\vshmain.prx
После установки
HEX Workshop, у вас появиться в контекстном меню при клике правой кнопкой мыши на файле - пункт "
Hex Edit with Hex Workshop".
Нажмите правой кнопкой на файле
VSHMAIN.PRX, предварительно скопированном из прошивки на компьютер, и выберите в открывшемся контекстном меню этот пункт.
Этот файл откроется в Хекс-редакторе.
По умолчанию в редакторе стоит способ отображения кода в двухбитном режиме, то есть по четыре знака в каждом столбце (по 2 бита). Нам же в данном случае, для удобства лучше будет созерцать код файла в однобитном представлении, так как в дальнейшем нам придётся оперировать 3-хбайтными и 4-хбайтными числами.
Для представления в однобайтном формате, сделайте следующее:
зайдите в меню "
Options->Preferences" и на первой вкладке "
Layout" в графе "
Columns", выберите
Group by: 1 (byte) и нажмите кнопку "
Применить" и "
ОК", как показано на рисунке ниже.
Теперь мы видим числа побитово, то есть попарно по два числа. Один байт - это двухзначное число в 16-ричной системе исчисления от 00 до FF.
Возьмите мышкой вертикальную полосу прокрутки справа и покрутите файл вниз и вверх. Обратите внимание на заголовок в начале файла
~PSP в правой части окна программы, о котором я говорил в
Предисловии в пункте
1. Так же вы увидите в правом вертикальном столбце, на всём протяжении файла - Абракадабру. Основные приготовления мы сделали, а теперь поехали.
1) Выделите, протянув мышкой, весь небольшой код Заголовка от 0х0 до 0х14F включительно, или до 0х150 не включительно.
Числа
0х0 и
0х150 - это не что иное, как
00000000 и
00000150 в левом вертикальном столбце отсчёта, просто записываются для удобства без лишних нулей спереди. Эти числа так же отображаются в нижней строке окна программы под названием "
Offset: XXXXXXXX" при установленном курсоре на определённой позиции.
Теперь нам нужно только удалить выделенный
Заголовoк - ~PSP - от 0х0 до 0х14F включительно, чтоб у нас остался только
Исполняемый Код - ELF, который начинается сразу после Заголовка - от 0х150 включительно и до конца файла. Как я говорил ранее в Предисловии - это и есть архив
GZIP, который впоследствии нам останется распаковать (декриптовать, так сказать
).
Обратите внимание на области, выделенные красными прямоугольниками:
а) Область
EF - это
0х14F. Её мы тоже захватываем.
б) Область
00000150 - её мы уже не трогаем, это начало заархивированного GZIP-файла и это число указывает на порядковый номер первого Байта в этой строке -
1F.
Следующий байт
8B будет иметь порядковый номер (offset) -
00000151 и так далее. Короче расклад понятен?
в) Область
Sel: 0x150 bytes - указывает на количество выделенных Байт.
Sel от слова Select - Выбор.
2) После того, как мы выделили нужную область -
Заголовoк - ~PSP, нужно от неё избавиться, чтоб у нас остался только архивный GZIP-файл.
Нажмите на клавиатуре кнопку "
DELETE" (Del), чтобы удалить выделенную область.
Ну вот, от Заголовка мы избавились. У нас остался чистый
Исполняемый Код - ELF, упакованный в формат
GZIP.
3) Теперь нужно его сохранить.
Выбираем в меню "
File->Save As..." и в открывшемся окне сохранения, дописываем в конец названия файла расширение
.gz
Cохраняем его с получившимся названием
vshmain.prx.gz
4) Теперь откройте получившийся архивный файл
vshmain.prx.gz любым архиватором, лучше воспользуйтесь его ближайший родствеником -
7Zip.
Извлеките, находящийся в архиве файл
vshmain.prx, только желательно под другим названием, чтобы не перепутать потом с оригиналом или не перезаписать случайно оригинальный файл вашей прошивки.
Назовите его лучше так:
vshmain_elf.prx. Почему именно
ELF, о котором я упоминал так же в самом начале, вы узнаете, если посмотрите на рисунок ниже.
Откройте ваш разархивированный (декриптованный) файл
vshmain_elf.prx в Хекс-редакторе и посмотрите на начало кода в правом вертикальном столбце и вы увидите, что заголовок декриптованного файла начинается со слова
ELF. Прокрутите файл вниз и понаблюдайте за правым столбцом и вы увидите, что там теперь вместо прежней Абракадабры появились вполне внятные и читабельные слова и всякие пути и расширения. Это говорит нам о том, что мы всё сделали правильно.
На этом процедура декриптовки у нас закончилась. Мы получили декриптованный файл, который теперь можно редактировать.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
II. Кастомизация - Изменяем цвет шрифта по месяцам
Продолжение следует...
https://www.pspx.ru/forum/showthread.php?t=76183