PSPx форум

PSPx форум (https://www.pspx.ru/forum/index.php)
-   PSP хакинг и девелопмент (https://www.pspx.ru/forum/forumdisplay.php?f=195)
-   -   Портируем старые плагины, такие, как Music.prx, под прошивку 6.60 (https://www.pspx.ru/forum/showthread.php?t=104559)

ErikPshat 18.03.2014 02:18

Портируем старые плагины, такие, как Music.prx, под прошивку 6.60
 
Вложений: 10
Портируем старый плагин Music.prx под прошивку 6.60/6.61


https://www.pspx.ru/forum/attachment....achmentid=9775

В общем пришла идея телепортации старинного отличного плагина Music.prx под прошивку 6.60.
Изначально этот плагин был изготовлен для консоли "neogeoCD 0.91" разработчиками Yoyofr & ZeLurker. Затем AhMan портировал его под PSP, во времена прошивок 3.02 ОЕ и совершенствовал его до прошивки 3.52 M33-2, добавляя кодеки и функционал.
Позже за работу взялся Cpasjuste и выпустил релиз, якобы адаптировав плагин под прошивку 3.90. С тех пор эта версия так и летает по всем просторам интернета и хорошо зарекомендовала себя в работе даже на новых прошивках.



Собственно суть проблемы такова, что на прошивке 6.60 плагин всё же неплохо работает, однако присутствуют свои костыли - это игнорирование настроек в файле конфигурации music_conf.txt, не работающие некоторые функции, по сочетаниям кнопок.

В чём состоит проблема?
Я просмотрел код плагина, он поставляется с исходниками. Несмотря на заявление Cpasjuste о портировании плагина под прошивку 3.90, я прекрасно вижу функции NID-ов от прошивок 3.7x. То есть, в прошивке 3.90 все NID-ы функций поменялись и меняются эти NID-ы постоянно от прошивки к прошивке.

Что такое NID-ы?
Это названия функций, которые вызываются именно по названию и выполняют присущие им действия. Но начиная где-то с прошивок 3.7x, Sony перестала напрямую вызывать функции в файлах своими именами, а стала скрывать их, хешируя названия в 4-байтный код, то есть к названию модуля прикрепляет закодированный номер функции. Вот как это выглядет на небольшом примере, после вывода дизассемблером PRXTool v1.1
Код:

0x01562BA3 [0x00001354] - sceAudioOutput2Reserve
0x086E5895 [0x000028A4] - sceAudioInputBlocking
0x136CAF51 [0x00000660] - sceAudioOutputBlocking
0x13F592BC [0x000008F4] - sceAudioOutputPannedBlocking
0x2D53F36E [0x00001374] - sceAudioOutput2OutputBlocking
0x38553111 [0x00001E04] - sceAudioSRCChReserve
0x41EFADE7 [0x00000C4C] - sceAudioOneshotOutput
0x43196845 [0x00001390] - sceAudioOutput2Release
0x5C37C0AE [0x00002070] - sceAudioSRCChRelease
0x5EC81C55 [0x00000AD8] - sceAudioChReserve
0x63F2889C [0x00001254] - sceAudioOutput2ChangeLength
0x647CEF33 [0x000012C4] - sceAudioOutput2GetRestSample

  • Первая 4-х байтная единица, например 0x01562BA3 - это и есть захешированный номер NID функции.
  • Следом в скобках указывается позиция, где она записывается.
  • И через тире уже нам дизассемблер даёт подсказку о самом настоящем названии функции в нехешированном виде. На самом деле этих названий вы не увидите в файле. Это разработчики PRXTool уже внесли в программу названия основных известных функций, которые не меняются.
Но на самом деле, есть ещё множество подфункций, которые SONY умышленно изменяет при выпуске очередного релиза прошивки. Вот так их опознаёт PRXTool:
Код:

0x0B61478E [0x000008F4] - sceAudio_driver_0B61478E
0x0B74AAA2 [0x000028F0] - sceAudio_driver_0B74AAA2
0x2047EAD8 [0x00000578] - sceAudio_driver_2047EAD8
0x20856A07 [0x0000105C] - sceAudio_driver_20856A07
0x2533CE02 [0x000015F4] - sceAudio_driver_2533CE02
0x3E087113 [0x00002680] - sceAudio_driver_3E087113
0x3E3C44F1 [0x00000E68] - sceAudio_driver_3E3C44F1
0x4036F0AE [0x00001E04] - sceAudio_driver_4036F0AE
0x4754D283 [0x000012C4] - sceAudio_driver_4754D283
0x6985717B [0x00000AD8] - sceAudio_driver_6985717B
0x6ACDCBB3 [0x00002934] - sceAudio_driver_6ACDCBB3

То есть, дизассемблер определяет по коду программы область подфункций, принадлежащей основному модулю sceAudio_driver и, не зная настоящего названия функции, просто подставляет его цифровой хеш к названию основного модуля - sceAudio_driver_0B74AAA2

Что за 4-х байтный хеш функции?
Как я уже упоминал ранее - это хеш полного названия функции. Хотя я и раньше оперировал с хешированными НИДами и умудрялся отыскивать нужные, но не представлял откуда берётся этот хеш. Этот секрет недавно мне поведал frostegater в соседней теме, где он выложил свою консольную утилитку по превращению названия функции в её захешированный вид. Затем Yoti облегчил этот процесс, нарисовав GUI интерфейс для быстрого ввода-вывода информации thank you. Вы можете сами потестить программку: N1D G3N3R@T0R.exe


На данном примере, на скриншоте, я взял первую строчку из 1-го блока кода выше, где указаны нерандомизированные НИДы, чтобы наглядно увидеть вывод хеша из названия функции:
  • 0x01562BA3 [0x00001354] - sceAudioOutput2Reserve
Как видно, название функции sceAudioOutput2Reserve превращается в 4-байтный код 0x01562BA3.
А заменив это название в захешированный вид, его можно использовать как-то так: sceAudio_01562BA3.
Хешь извлекается следующим образом... Из названия функции генерируется чек-сумма SHA-1 (160 bit).
В данном случае SHA-1 равна - A32B56014147A25FDE15A7AF4D596DADA06BE3AB
Затем берутся первые 4 байта и инверсируются побайтно. Получаем 01562BA3.
Скрин генерации SHA-1
Думаю с этим всем всё понятно.

С чего начинать?
Начинать следует с дизассемблирования этих функций самого плагина music.prx и вот что он нам выдаёт (я почистил лишние куски кода, которые нам абсолютно не нужны и оставил только названия функций, которые изменяются от прошивки к прошивке):
Код:

Name:    Music_prx

0xB282F4B2 [0x0000536C] - sceAudio_driver_B282F4B2
0x669D93E4 [0x00005374] - sceAudio_driver_669D93E4
0x138A70F1 [0x0000537C] - sceAudio_driver_138A70F1
0x43645E69 [0x00005384] - sceAudio_driver_43645E69

0xE56B11BA [0x000053A4] - sceDisplay_driver_E56B11BA

0xD6E50D7B [0x000053AC] - scePower_driver_D6E50D7B
0x1688935C [0x000053BC] - scePower_driver_1688935C

0xC4AAD55F [0x000053C4] - sceCtrl_driver_C4AAD55F

Вот это все изменяющиеся функции, используемые плагином для своей работы.
А теперь посмотрим на SilverSpring's PSP PRX Libraries Documentation Project. Эту тему я специально подготовил, т.к. его сайт постоянно находится в ауте. И он много времени отдал этому проекту, вычисляя NID-ы: имена функций на каждой прошивке.

Итак, открываем libdoc от прошивки 3.7х и смотрим файлы, соответствующие модулям в плагине music.prx, видим следующие цифры:
Код:

kd/audio.prx        sceAudio_Driver
                                <NAME>sceAudio_driver</NAME>
                                <FLAGS>0x00010011</FLAGS>
                                <FUNCTIONS>
                                        <FUNCTION>
                                                <NID>0x138A70F1</NID>
                                                <NAME>sceAudio_driver_138A70F1</NAME>
                                        </FUNCTION>
                                        <FUNCTION>
                                                <NID>0x43645E69</NID>
                                                <NAME>sceAudio_driver_43645E69</NAME>
                                        </FUNCTION>
                                        <FUNCTION>
                                                <NID>0x669D93E4</NID>
                                                <NAME>sceAudio_driver_669D93E4</NAME>
                                        </FUNCTION>
                                        <FUNCTION>
                                                <NID>0xB282F4B2</NID>
                                                <NAME>sceAudio_driver_B282F4B2</NAME>
                                        </FUNCTION>
                                </FUNCTIONS>
kd/display.prx        sceDisplay_Service
                                <NAME>sceDisplay_driver</NAME>
                                <FLAGS>0x00010011</FLAGS>
                                <FUNCTIONS>
                                        <FUNCTION>
                                                <NID>0xE56B11BA</NID>
                                                <NAME>sceDisplay_driver_E56B11BA</NAME>
                                        </FUNCTION>
                                </FUNCTIONS>
kd/power.prx        scePower_Service
                                <NAME>scePower_driver</NAME>
                                <FLAGS>0x00010011</FLAGS>
                                <FUNCTIONS>
                                        <FUNCTION>
                                                <NID>0x1688935C</NID>
                                                <NAME>scePower_driver_1688935C</NAME>
                                        </FUNCTION>
                                        <FUNCTION>
                                                <NID>0xD6E50D7B</NID>
                                                <NAME>scePower_driver_D6E50D7B</NAME>
                                        </FUNCTION>
                                </FUNCTIONS>
kd/ctrl.prx        sceController_Service
                                <NAME>sceCtrl_driver</NAME>
                                <FLAGS>0x00010011</FLAGS>
                                <FUNCTIONS>
                                        <FUNCTION>
                                                <NID>0xC4AAD55F</NID>
                                                <NAME>sceCtrl_driver_C4AAD55F</NAME>
                                        </FUNCTION>
                                </FUNCTIONS>

Сравнив показания плагина music.prx выше и функций прошивок 3.7х здесь, мы видим, что идёт 100% совпадение!!!
Скажу больше, в прошивке 3.90 нет этих цифр впомине. То есть, там НИДы функций полностью изменены. Поэтому заявление разработчика, что он адаптировал плагин под прошивку 3.90 - явная ложь.



Итог: нам теперь явно ясно, что для портирования плагина под прошивку 6.60, необходимо искать соответствующие НИДы функций в этих файлах:
Код:

Название файла        Название модуля

kd/audio.prx        sceAudio_Driver
kd/display.prx        sceDisplay_Service
kd/power.prx        scePower_Service
kd/ctrl.prx        sceController_Service

Проще говоря, НИДы плагина прошивки 3.7х необходимо сопоставить НИДам тех же функций прошивки 6.60.
Заменить их в исходниках и заново скомпилировать новый адаптированный плагин под 6.60.
Как правило, у каждого модуля существует определённый набор функций и их количество и порядок в файле редко изменяется. Поэтому, думаю, не составит труда сопоставить НИДы этих прошивок, либо ещё промежуточных и вывести параллели между прошивками.

Далее можно выстроить параллели каждого типа НИДа в каждой прошивке и составить таблицу.



Процесс исследования плагина music.prx
  1. Для начала, необходимо вычислить все функции рандомных NID-ов, используемых плагином. Скачиваем дизассемблер PRXTool и закидываем туда наш подопытный файл music.prx.
  2. Запускаем батник "16. ImpExp & Alias Print.bat" и получаем на выходе все Импорты и Экспорты функций, используемых плагином в текстовом файле "16_Import_Export.txt".
  3. Удаляем все лишние строки со статическими функциями, т.е. у которых нет в названии функции суффикса с 4-значным НИДом.
  4. Далее, вычисляем по рандомным НИДам версию прошивки, от которой эти НИДы были использованы. Ну тут ясное дело, что НИДы функций принадлежат прошивке 3.71.
  5. Поэтому берём файлы прошивок 3.71, в которых используются эти функции и дизасмим их. Так как я больше разбираюсь в HTML, то я выбрал батник дизасма "24. DISASM2HTML.bat" и сохранил результаты в папке под названием прошивки "371". Затем произвёл то же самое действие с аналогичными файлами от других прошивок, чтобы проследить сдвиги функций от прошивки к прошивке.
  6. Таким образом эти HTML файлы от разных прошивок я просто сравнил в браузере. Разница в НИДах и сходство кода видна невооруженным глазом. На этом примере я произвёл поиск в дизассемблированном файле audio.prx.html по НИДу sceAudio_driver_138A70F1 в прошивке 3.71. Затем, посмотрев на окружение найденного, произвёл поиск по соседнему значимому слову sceAudioOutput2Release в других прошивках, что явно вывело на аналогичный код и выдало изменившиеся НИДы, как на тарелочке с голубой каёмочкой.

  • NID в прошивке 3.71 ***
    NID в прошивке 3.71
  • NID в прошивке 3.80 ***
    NID в прошивке 3.80
  • NID в прошивке 3.95 ***
    NID в прошивке 3.95
  • NID в прошивке 5.00 ***
    NID в прошивке 5.00
  • NID в прошивке 6.20 ***
    NID в прошивке 6.20
  • NID в прошивке 6.35 ***
    NID в прошивке 6.35
  • NID в прошивке 6.60 ***
    NID в прошивке 6.60

скрины отдельно
3.71 sceAudio_driver_138A70F1 (первая строка в таблице ниже)

Вложение 9853

3.80

Вложение 9854

3.95

Вложение 9855

5.00

Вложение 9856

6.20

Вложение 9857

6.35

Вложение 9858

6.60

Вложение 9859

И в результате получилась вот такая таблица:


M U S I C . P R X P L U G I N f o r P S P -= by AhMan =-
Necessary DataFirmwares NID'sComments
FILEMODULEFUNCTION3.7x3.80/3.903.95/4.015.00/5.506.206.356.60/6.61EDITED
audio.prxsceAudio_driversceAudio_driver_138A70F1D4828217C3C2C4B43E3FAE75F462A7B90399579BB7F5A1B2hw.h; sceAudio_driver.S
audio.prxsceAudio_driversceAudio_driver_43645E6994E28BDDCD272A5D909092ABE26E49E7475F41FEAC81DE4Fhw.h; sceAudio_driver.S
audio.prxsceAudio_driversceAudio_driver_669D93E44036F0AEC15BE9A3BFC404F6A502088EE9BCD519837701CChw.h; sceAudio_driver.S
audio.prxsceAudio_driversceAudio_driver_B282F4B280BCF50CFCC526B7322078A577EBE4A2A388ABDB9D77949EsceAudio_driver.S
audio.prxsceAudio_driversceAudio_driver_035C14C62047EAD8F7083625324BA73DA5C0603BD35EFCD9671E97E8init.c
audio.prxsceAudio_driversceAudio_driver_798FB2A3C66BDCA161BBE62DF355A2632FD643D0A906D2085CDEF9A4init.c
audio.prxsceAudio_driversceAudio_driver_D6620E8E9DA39F69BCD3344C1A7526DD45457EE5686AC4F4E440DF7Dinit.c
audio.prxsceAudio_driversceAudio_driver_47D06FE6BE6F1721850A552BE8D4EE26548EEFD1C847973E17D856B9init.c
audio.prxsceAudio_driversceAudio_driver_5140D94F0B61478EC4839793DC34AC2023F19798B29D727FB7CCF1D7init.c
display.prxsceDisplay_ServicesceDisplay_driver_E56B11BA3749CDA0C28EFAA7D8D2FD3564EE9BF208A10838FBB369FDsceDisplay_driver.S
loadcore.prxLoadCoreForKernelLoadCoreForKernel_CF8A41B1F17DD6DD98D2CF2B0B53340FBEF0A05EEF8A0BEAF6B1BF0FLoadCoreForKernel.S
sysmem.prxSysclibForKernelstrcspn89B79CB189B79CB189B79CB189B79CB1MissingMissingMissingconfig.c
sysmem.prxSysclibForKernelstrspn62AE052F62AE052F62AE052F62AE052FMissingMissingMissingconfig.c
sysmem.prxSysclibForKernelstrtok87F8D2DA87F8D2DA87F8D2DA87F8D2DAMissingMissingMissingconfig.c
power.prxscePower_ServicescePower_driver_1688935C94C3991E2A12371B78834264BF5BA7FC9F53A71F04711DFBscePower_driver.S
power.prxscePower_ServicescePower_driver_D6E50D7B94BC491819387EF4AF23EFA61A41E0ED8BA12BAF766CD857scePower_driver.S
power.prxscePower_ServicescePower_driver_4431FF21114D35609AF4290C775DA4989CDB22B5A2E9E73FE52B4362init.c (3.5x 0xD66EF08D)
ctrl.prxsceController_ServicesceCtrl_driver_C4AAD55FD65D4E9A591B3F366B247CCE3CA6922B18654FC02BA616AFsceCtrl_driver.S
↑ ↑ ↑↑ ↑ ↑
Music plugin version 055 ported to sony PSP 3.90 firmware.
Cpasjuste @ http://mydedibox.fr/
Music plugin v056 for 6.60/6.61 firmware
ported by ErikPshat

Скачать: обновлённый плагин для 6.60/6/61 можно :download: отсюдава.

SILENT-Pavel 18.03.2014 03:33

Хорошая тема, поддержку этого плагина кстати добавили в тн-в на вите
может можно его модифицировать что-нибудь прикрутить типа персонализированных плейлистов для каждой отдельной игры пс1 и всякое такое?

ErikPshat 18.03.2014 14:16

Цитата:

Сообщение от SILENT-Pavel (Сообщение 1085309)
поддержку этого плагина кстати добавили в тн-в на вите

Оу, не знал этого. Тогда что нам мучиться, TN по-видимому всю работу уже произвёл. Даёшь плагин TN-V в студию.

Ну собсно тему можно переименовать, как общую для всех плагинов, так как то, что я описал, касается всех плагинов и программ, использующих изменяемые НИДы функций.
Ну плейлисты вроде как поддерживаются, судя по коду в исходниках. Да и модификацию можно произвести, имея исходники. Насчёт персонализации для каждой игры ты уже переборьщил ))

SILENT-Pavel 18.03.2014 15:06

Цитата:

Сообщение от ErikPshat (Сообщение 1085314)
Насчёт персонализации для каждой игры ты уже переборьщил ))

ну всмысле чтобы плагин определял айдишник игры как это делает взломщик
и заготовленные заранее мп3 файлы играл для этого айдишника (а то осты пс1 приходится на компе хранить и заливать на виту под каждую игру вручную)
в текущей версии которую я качал отсюда такой функции вроде нет:
http://wololo.net/talk/viewtopic.php?f=56&t=17071
там в списке мьюзик.прх - фиг занет кто эту версию под 6.60 делал и когда и как

ErikPshat 18.03.2014 16:36

Цитата:

Сообщение от SILENT-Pavel (Сообщение 1085315)
там в списке мьюзик.прх - фиг занет кто эту версию под 6.60 делал и когда и как

Скачал, проверил, сравнил = совпадение 100%.
Это и есть он, плагин для прошивки 3.71.

Ты попробуй в конфиге ms0:/seplugins/music_conf.txt сменить директорию проигрывания музыки, например на DIR = ms0:/MUSIC/ или ещё что-нибудь поменять - оно не работает, всегда музыка подхватывается только из конфига по-умолчанию, встроенного внутри плагина music.prx, там прописан путь ms0:/PSP/Music/

По поводу поддержки плейлистов, я вижу в коде плагина строчки:
Код:

ea3.EA3.ID3.id3.TIT2 // это поддержка тегов, встроенных внутри музыкальных композиций
pl_cur:%08X // это наведение курсора на плейлист
Plylst Status:%08X // это информация о плейлисте
PLYLST_MEM..Playlist_Thread // и такие строчки есть

Ещё проверь, действительно ли работают эти функции, а то я сомневаюсь:
Код:

VOLUP //увеличение громкости
VOLDOWN // уменьшение громкости
START_STOP // остановка и воспроизведение
PREVIOUS // предыдущий трек
NEXT // следующий трек
MODE_TOGGLE // переключение режима воспроизведения
CPU_NEXT // увеличение скорости процессора
CPU_PREV // уменьшение скорости процессора
RELOAD // перезагрузить музыку


ErikPshat 19.03.2014 05:53

Вообщем тут такое дело...
Я сейчас живу в чужом городе, в чужой квартире, без PSP, без телевизора и радио.

Нужны декриптованные файлы PRX от разных прошивок, желательно полный набор: 3.71, 3.80, 3.95, 5.00, 6.20, 6.35, 6.60.
Это основной ряд прошивок, в которых происходили значительные изменения.
Иначе проследить передвижение NID-ов будет проблематично.
Для этого нужно:
  1. Скачать файлы обновления прошивок отсюда.
  2. Извлечь все файлы с одновременной декриптовкой по кнопке :square: с помощью PSARDumper'a
  3. Разложить извлечённые файлы PRX из папок kd и module по папочкам с названием прошивки, например 6.60_PRX_Decrypted
  4. Залить во вложения в эту тему: [БАЗА] Декриптованные RCO и PRX от всех прошивок
Надеюсь остались ещё люди с прошитыми PSP или с хакнутым эмулятором PSP на Вите, чтобы извлечь и декриптовать файлы.

P.S. Немного расширил описание в шапке. Возможно кому-то будет интересно почитать мои сказки...

SILENT-Pavel 19.03.2014 08:36

ErikPshat, постараюсь выложить указанные декриптованные модули в скором времени.
апд: уже в процессе, больше половины готово, заливаю

vash 19.03.2014 10:44

На 6.60 я вместе с 3.90 ссылки выкладывал в чате:
6.60 - http://yadi.sk/d/Iukg9RSLKfuFA
3.90 - http://yadi.sk/d/dJKDmkJ2Kftri
Ссылки постоянные.

SILENT-Pavel, если дело застопорится, напиши, я продолжу.

SILENT-Pavel 19.03.2014 11:09

vash, не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей), пробовал два раза. остальные заливаются успешно

готово: https://www.pspx.ru/forum/showthread....56#post1085356

vash 19.03.2014 11:51

Цитата:

Сообщение от SILENT-Pavel (Сообщение 1085354)
не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей)

Сейчас попробую.
П.С.: а для гошки декриптованные прошивки нужны?

ErikPshat 19.03.2014 13:07

Цитата:

Сообщение от SILENT-Pavel (Сообщение 1085354)
не вышло извлечь из 6.35 практически ничего (точнее вышло все кроме prx подулей), пробовал два раза

Ага, видел твои пустые папки 6.35 :)
Попробуй мой дампер. Правда я его только что сделал на коленке, по бырому скопипастил все ключи из нашей таблицы и закомпилил. Проверять код было некогда, возможно не туда вставил и не то. Распространению не подлежит!

Цитата:

Сообщение от vash (Сообщение 1085358)
П.С.: а для гошки декриптованные прошивки нужны?

Ну на данный момент может и не нужны.
Однако неплохо было бы пробелы в базе заполнить. А то ведь в нужный момент никогда не найдёшь.

vash 19.03.2014 13:43

Используя другой дампер PSARDumper_660_neur0n 6.35 извлеклась. https://www.pspx.ru/forum/showthread....63#post1085363

ErikPshat 19.03.2014 14:28

vash, помню Нейроновский дампер тоже не всё извлекал, а Проксимовский отрабатывал, поэтому я в инструкции поменял их местами, хотя там раньше стоял от Нейрона. Получается один там косячит, другой здесь.

А мой дампер над головой в посту что? Там забиты все мыслимые и немыслимые ключи от всех прошивок и даже от Виты )))
Правда я на скорую руку скачал дампер Проксимы, запилил туда все наши ключи и скомпилировал. Не знаю, заработает ли вообще.

vash 19.03.2014 14:57

Цитата:

Сообщение от ErikPshat (Сообщение 1085371)
А мой дампер над головой в посту что?

Работает, но 6.35 так же полностью не дамперит.

vash 19.03.2014 15:20

ErikPshat, не спеши. Я твоим дампером не смог сдампить 6.35, за то смог им сдампить 6.60 от Гошки, а тем не смог (пустые и неполные папки). Так что, косяки в обоих версиях дамперов.

ErikPshat 19.03.2014 15:44

vash, во какая засада ))) а я уже поменял местами в инструкции. Ну пусть будет, всё равно лежат во вложении, потом надо будет с ними отдельно разбираться.
А тем временем я скомпилил дампер с исходников Нейрона с нашим пакетом ключей. Если не трудно, можешь проверить на 6.35 и на Гошке, а вдруг всё подхватит...

Кстати, оказывается там, во вложении у дамперов, лежит же моя давняя сборка, не помню какая, когда и зачем, под названием PSARDUMPER_PSPxMOD.7z, а я сразу не заметил, но помню собирал тщательно и с любовью :). Можешь ещё её потестить, если есть время. Тоже интересно узнать о костылях.

vash 19.03.2014 16:45

ErikPshat, из вложения 6.35 сдампила, 6.60 от гошки - нет.
PSARDUMPER_PSPxMOD 6.35 не сдампила, 6.60 от гошки - да.
Раньше, та что ты переделал ( https://www.pspx.ru/forum/showpost.ph...1&postcount=11 ), работала наоборот.

Yoti 19.03.2014 19:17

  1. Цитата:

    Сообщение от ErikPshat (Сообщение 1085307)
    был изготовлен для консоли "neogeoCD 0.91"

    Для эмулятора, может?

  2. Цитата:

    Сообщение от ErikPshat (Сообщение 1085307)
    Вы можете сами потестить программку: N1D G3N3R@TOR.exe

    Через ноль пишется, через ноль!

  3. HUD для 6.35 в своё время собирался добавлением "sceNids_driver_635.o" к строке OBJS в makefile и созданием файла "sceNids_driver_635.S" вида
    sceNids_driver_635.S
    Код:

    //        ------------------        //
    //        codestation's nids        //
    //        ------------------        //
        .set noreorder

    #include "pspstub.s"

            STUB_START  "sceCtrl_driver",0x00010000,0x00050005
                    STUB_FUNC        0x18654FC0,sceCtrlPeekBufferPositive
                    STUB_FUNC        0x02DD57CF,sceCtrlPeekBufferNegative
                    STUB_FUNC        0x9F3038AC,sceCtrlReadBufferPositive
                    STUB_FUNC        0xEB5F1D7A,sceCtrlReadBufferNegative
                    STUB_FUNC        0x33AB5BDB,sceCtrl_driver_5E77BC8A
            STUB_END

            STUB_START  "scePower_driver",0x00010000,0x00010005
                    STUB_FUNC        0x6C4F9920,scePowerTick
            STUB_END

            STUB_START  "sceDisplay_driver",0x00010000,0x00060005
    //                STUB_FUNC        0x00000000,sceDisplayEnable
    //                STUB_FUNC        0x00000000,sceDisplayDisable
                    STUB_FUNC        0xCCEEA6BB,sceDisplay_driver_5B5AEFAD
                    STUB_FUNC        0x89FD2128,sceDisplaySetBrightness
                    STUB_FUNC        0x3A5621E0,sceDisplayGetBrightness
                    STUB_FUNC        0x21F912F4,sceDisplayGetVcount
            STUB_END

            STUB_START  "LoadCoreForKernel",0x00010000,0x00010005
                    STUB_FUNC        0xEF8A0BEA,sceKernelFindModuleByName
            STUB_END

            STUB_START  "SysMemForKernel",0x00010011,0x00020005
                    STUB_FUNC        0x00E9A04A,sceKernelSetDdrMemoryProtection
    //                STUB_FUNC        0x00000000,sceKernelGetModel
            STUB_END


ErikPshat 20.03.2014 10:49

Цитата:

Сообщение от vash (Сообщение 1085381)
ErikPshat, из вложения 6.35 сдампила, 6.60 от гошки - нет.
PSARDUMPER_PSPxMOD 6.35 не сдампила, 6.60 от гошки - да.

Ну понятно. Теперь ясен пень, что:
  • Дампер Нейрона дампит 6.35, а для Гошки не хватает кода.
  • Дампер Прксима дампит Гошку, но спотыкается на 6.35.
Вроде бы так. Соответственно я все свои сборки попутал и использовал исходники и того и другого )))
Главное, что баг установлен, осталось дело за малым, исследовать коды обоих и найти недостающее звено.

Цитата:

Сообщение от SILENT-Pavel (Сообщение 1085356)
Рассортированные декриптованные (PSARDumper на Vita tn-v 8) PRX из папок kd и module от 3.71, 3.80, 3.95, 5.00, 6.20, 6.35, 6.60 ofws.

Проанализировал через PRXTool файлы audio.prx от всех выложенных прошивок. НИДы у всех прошивок одинаковые, как на 3.71 :D.
Этого быть не может. Ты по видимому распихал по всем папкам одну и ту же прошивку 3.71. Короче что-то дофига понапутал.

У COOLERbyPSP и vash я скачивал 3.90, 6.35 и 6.60, так там явно все НИДы меняются в каждой нововй прошивке. И исследовал готовые libdoc.xml 3.7х-5.00 с сайта SilverSpring, там аналогичная история, у каждой новой прошивки рандомизированные ниды сменяются в обязательном порядке.


Цитата:

Сообщение от Yoti (Сообщение 1085384)
1 Для эмулятора, может?
2 Через ноль пишется, через ноль!
3 HUD для 6.35 в своё время собирался добавлением "sceNids_driver_635.o" к строке OBJS в makefile и созданием файла "sceNids_driver_635.S" вида

1. Ну читал редми в исходниках на английском, про эмулятор не понял наверное.
2. Ох, ё.п.р.с.т., опять ноль пропустил, как фрост )))
3. Ну насчёт S я как бы в курсе. Именно так и собираюсь через стубы внедрядь НИДы. Ну так многие и поступают.

ErikPshat 20.03.2014 10:58

А, да, если кто собирается тоже исследовать НИДы, и не понял, каким образом их дебажить, то через PRXTool нужно пользоваться следующими батниками:
  • 12. PRXstubs.bat - выдаёт компактный чистый список НИД-ов

    Плюс в помощь:
  • 14. Depends.bat - чтобы узнать, какому файлу принадлежит модуль функции.
  • 16. ImpExp & Alias Print.bat - выдаёт хорошую расширенную информацию по НИД-ам и их смещениям.



P.S. Файлы от других прошивок ещё требуются...
План действий таков:
После декрипта файлов PSARDumer-ом, в корне создаётся папка F0.
Переименовываете папку под номер прошивки с ясным пояснением, например "371_PRX_Decrypted"
Внутри папки оставляете только папки, содержащие файлы PRX - это следующие папки:
  • kd - содержит системные файлы PRX
  • kd/resource - содержит файлы PRX, нормальный дампер их должен тоже декриптовать с заголовком ELF в хедере.
  • vsh/module - содержит ресурсные файлы PRX
  • vsh/etc - содержит файлы версии прошивки version.txt и index_0X.dat - это тоже файлы PRX, тот же version.txt, только в зашифрованном виде, нормальный дампер их должен тоже декриптовать и на выходе в текстовом редакторе должны увидеть то же содержимое, как в version.txt.


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

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