Декриптовка - Русификация - Запаковка
Вложений: 33
Декриптуем, русифицируем и обратно пакуем на примере RECOVERY.PRX Решил довести начатое почти год назад и не доведённое до конца дело: https://www.pspx.ru/forum/showthread.php?t=59657 Данным методом, о котором пойдёт речь ниже, запакованы все кастомные файлы кастомной прошивки:
После успешного усвоения данного урока, у вас на декриптовку будут уходить считанные секунды... Итак, начнём! Наша работа будет производится в 3 этапа:
Предисловие (основные понятия) Данные файлы состоят из двух частей - Заголовка ~PSP и собственно самого Исполняемого Кода ELF.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I. Декриптовка Декриптовка - это самый лёгкий и быстрый этап. Для примера я взял файл recovery.prx из flash0 своей прошивки, который лежит в папке: flash0:/vsh/module/... Вам понадобится Хекс-редактор, после установки которого, у вас появиться в контекстном меню при клике правой кнопкой мыши на файле - пункт "Hex Edit with Hex Workshop".
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ II. РУСИФИКАЦИЯ В общем, декриптовка определённого файла подразумевает последующую его кастомизацию, в данном случае русификацию, иначе для чего же его декриптовать. Тут я подумал, зачем же я взял для примера этот recovery.prx? И..., надумал встроить в него поддержку русских символов. Как вам известно, в рекавери-меню нет поддержки кириллицы и если вы положите файл с переводом ru_recovery.txt в папку "seplugins" или в корень flash1, то в рекавери-меню вместо русских букв появятся крякозяблики. Предисловие Буквы, как известно, нарисованы на квадратике - 16 символов в ширину и 16 рядов в высоту, итого 16х16=256 символов, что соответствует максимальной величине FF в шестнадцатеричной системе. Каждый квадратик с символом (буквой), в свою очередь, состоит из 64-х пикселей по 1 биту. То есть, каждый символ составляет ровно 8 байт, исходя из того, что 1 байт = 8 бит. Так вот, из этой картинки и берутся буквы, цифры и прочие символы, которые мы видим на экране PSP в виде упорядоченного текста. В рекавери-меню от Dark_Alex, нет русского алфавита и выглядит его таблица символов так: А если учесть, что русская кодировка символов находится в диапазоне C0 - FF, как раз в том месте, где находятся всякие ненужные треугольники, кирпичики и гиперборейские символы, то в результате мы имеем в распоряжении полноценный англо-русский алфавит: Причём все символы из таблицы в Хексе будут иметь код именно такой, если вы возьмёте значения, которые я пронумеровал слева и сверху.Как-же выглядит этот алфавит в Хекс-редакторе и как его отыскать там?
Таблица символов в Хексе Эта библиотека находится здесь: c:\pspsdk\psp\sdk\lib\libpspdebug.a Итак, приступим к русификации! 1. Если вы так и не поняли, из написанного выше, как самому вручную извлечь и вставить свою матрицу шрифтов, то воспользуйтесь программкой, написанной Andy_maN, которая содержит в себе бинарник картинки с англо-русскими символами: Вложение 14780. 2. Запустите файл "PatcheR.1.0b.exe" 3. В первой строке "Что будем патчить:", нажмите на квадратик справа и в открывшемся проводнике укажите ваш декриптованный файл recovery.prx: Скрин Скрин 6. Всё, ваш recovery.prx русифицирован! Такой, декриптованный пока ещё, файл можно положить на место во flash0:/vsh/module/... и он будет прекрасно работать. Не забудьте только положить текстовой документ с переводом ru_recovery.txt в папку "seplugins" или в корень "flash1". 7. Наслаждайтесь русским рекавери-меню! Но, заметьте, ваш декриптованный файл теперь весит 61,3 Кб (62814 байта), а изначальный исходник весил 25,1 Кб (25784 байта) - это почти в два с половиной раза больше места занимает во flash0. Чтобы исправить ситуацию, лучше его обратно упаковать и закриптовать. Поэтому переходим к третьему пункту: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ III) Запаковка с новой криптовкой. Запаковать обратно вручную так же просто как и распаковать. Наш декриптованный и русифицированный файл recovery.prx теперь нужно обратно заархивировать в GZIP-архив с нормальной степенью сжатия. Если сильно сжать, то потом просто может немного притормаживать, а так на работоспособность степень сжатия никак больше не влияет. Для этого воспользуйтесь архиватором 7-Zip. WinRar, к сожалению, не умеет архивировать в GZIP, только разархивировать. 1. Предварительно, прежде чем архивировать, его можно переименовать как заблагорассудится, даже без расширения. Я, например, его переименовал так: Andy_maN_lupus_ErikPshat_PSPx.Ru - в честь разработчиков русификатора, ну и себя любимого :-), а так же нашего сайта. Для чего? Узнаете далее... 2. Запаковываем в GZIP наш кастомизированный файл recovery.prx ака Andy_maN_lupus_ErikPshat_PSPx.Ru. 3. Нажмите правой кнопкой мыши на создавшемся архиве Andy_maN_lupus_ErikPshat_PSPx.Ru.gz и выберите в раскрывшемся контекстном меню пункт: "Hex Edit with Hex Workshop v6.8". Скрин Скрин 6. Нажмите в верхнем меню "File -> Open..." Скрин Скрин Обратите внимание, что код в этой позиции начинается с 1F8B - это волшебная метка начала Gzip-архива. Скрин Скрин Скрин Скрин Теперь дело осталось за малым - сгенерировать и проставить секретные криптографические метки :-) 12. Cразу открою секрет этих меток... A) В offset: [0x28,0x29,0x2A,0x2B] - указывается размер декриптованного ELF-файла задом наперёд (нули спереди отбрасываются при указании смещений).13. Давайте проставим эти метки... A) Итак, в offset: [0x28,0x29,0x2A,0x2B] - указывается размер декриптованного ELF-файла задом наперёд.На этом вся криптовка заканчивается. 14. Жмем "File -> Save As..." и сохраняем как recovery.prx в любую свободную папку. 15. Подключаем PSP к компьютеру и кидаем файл во flash0:/vsh/module/... Создаём на компьютере пустой текстовой документ под названием ru_recovery.txt, копируем в него код из спойлера ниже, сохраняем и закидываем в корень flash1 или в папку seplugins. Перевод рекавери У меня на распаковку уходит не более 10 сек, а на запаковку - не более 30 сек. Цитата:
Скрин |
ErikPshat, спасибо за подробную информацию. низкий тебе поклон
|
Спасибо, Эрик! Отлично написал! Впрочем, не впервой) Оффтоп: как перевести файлы тем prx для новой проши?
|
ErikPshat, спасибо за такой полезный мануал.
|
ErikPshat, а через что ты такой шрифт получил?)
http://i008.radikal.ru/0904/f5/c9c6b4a83e94.png |
Dr.House, ну это через Ромартист. Я снял скрин и добавил слева и сверху нумерацию. Там же можно размер отображения матрицы менять от 1:1 до 4:1.
А до этого, были сделаны старые скрины в фотошопе. Фотошоп тоже умеет отображать эту матрицу шрифтов, т.к. это же фактически картинка в RAW формате. Но скрины получились там не очень красивыми. А вот RomArtist их чётко показывает. |
Цитата:
|
Цитата:
Видишь, первый квадратик - пустой. Это и есть первые 8 нулевых байт (00 00 00 00 00 00 00 00) таблицы Debug-шрифта. Теперь посмотри на следующий квадратик - там нарисован смайлик. Это и есть следующие 8 байт, который в хексе записывается так: 3C 42 A5 81 A5 99 42 3C. Поэтому, чтобы найти начало таблицы шрифтов, то достаточно ввести в поиск 3C 42 A5 81, что безошибочно приведёт на нужное место. Ессно, что искать нужно в декриптованном файле, а не в заархивированном GZIP архиве. |
Интересно, а никто не пробовал несжатый *.prx сжать (исходник не сжатый)?
|
myhouse_1991, в смысле? Если ты имеешь ввиду recovery.prx, то он в проше сжатый.
А вообще я только этим способом расжимаю и сжимаю все файлы. Никакими конвертерами не пользуюсь, т.к. это лишние заморочки, на которое уходит время. А таким образом значительно быстрее и всё под контролем. |
Цитата:
lex3a добавил 20-06-2009 в 19:23 Цитата:
|
Цитата:
Цитата:
|
Цитата:
Когда ты делаешь это вручную, то достаточно нажать правой кнопкой на файле и запустить Хекс-редактор. Он запустится, открыв этот файл. Далее элементарные операции Копи->New->Пасте->Save. Может это действительно чуть дольше, зато весь процесс контролируется и я точно знаю, что делаю и что получаю. Причём я могу контролировать размер файла при упаковке. Например, ты видел мой установщик 5.00М33-6 или мою сборку Пандоры. Так вот, туда никак ты не подберёшь файлы сконврченные автоконвертером, т.к. файлы от новой проши просто не влезут по размеру или не совпадёт чексумма. Цитата:
|
Такой вопросец-
Пробовал русифицировать vshmenu.prx из ultimate vsh menu v.2.00,вроде делал все по технике,несколько раз. Потом прочел в ридми патчера,что с его помощью невозможно снять 'залочку в некоторых файлах,таких как vsh меню' отсюда вопрос,можно ли пользоваться патчером,или бинарник с русским шрифтом вручную через хекс вставлять? З.Ы. Пробовал с помощью патчера,и без него,эффект нулевой( |
если "залочку" снимешь то патчером можно будет
|
Цитата:
http://i069.radikal.ru/0907/80/4290e2628196.png |
ErikPshat, огромное спасибо!
Цитата:
|
Цитата:
Цитата:
И обрати внимание в той же теме, для того, чтобы файлы принимались на чужой PSP:
Можешь проверить выложенный там мой автоконвертер тем. Когда запускаешь программу "5.00 Hybrid 5.50.exe", из неё извлекается самораспаковывающийся архив "archive.exe". В нём лежит папка "support/550/vsh/module/" и можешь посмотреть на заголовки всех 21-го файла. Yoti использовал эти-же мои файлы, только его программа пишет файлы в прошивку. Я этот метод не совсем поддерживаю, так как при замене файлов в прошивке, необходимо пропатчивать темы CTF, чтобы в них не остались ни одного файла из 21-го, иначе произойдет конфликт между разными версиями прошивок, т.к. файлы PRX и RCO работают впаре. Или вообще отказаться от использования Тем, что я считаю неприемлемым. Мой же способ - это замена/добавление файлов в Тему, после активирования которой, необходимый набор файлов активируются из темы, а не из прошивки и никаких конфликтов не будет. И вдобавок, таким образом, мы не вмешиваемся в целостность самой прошивки. Исходя из того, что хоть в первом, хоть во втором случае, необходимо пропатчивать темы, то зачем тогда производить лишнее действие по замене файлов в прошивке, если их можно добавить в Тему во время пропатчивания одним махом и так-же получить все функции прошивки 5.50. Может кто-то скажет, что я вообще не использую темы, мне это не надо, то что мешает создать стандартную CTF тему ))) А заголовок я взял когда-то давно из проги "Xmb Multi Cusomizer for Windows". При сохранении файла там есть опция компресии и она сама добавляет заголовок. Я его посмотрел и мне он понравился, поэтому я его отдельно вырезал и храню про запас )). Цитата:
|
такой вопрос: а если в фаиле нет таблицы шрифтов, что делать?
калбашу dayviewer.prx |
svetlois, да, там нету debug-шрифта. Там другой тип шрифта и причём без поддержки UTF-8, скорее всего UTF-7, в котором нет русского алфавита.
|
Текущее время: 01:20. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
PSPx Forum - Сообщество фанатов игровых консолей.