PDA

Просмотр полной версии : Страсти по Inferno и March33 PRX


Scorpeg
20.01.2015, 16:31
Кто-нибудь пробовал заинтегрировать Inferno драйвер в 5.00 прошивку (тока не надо про то, что обновляйся и т.п.)?

COOLERbyPSP
20.01.2015, 16:44
Scorpeg, это всё очень мило, но зачем и почему не обновиться?

Yoti
22.01.2015, 11:51
Scorpeg,
ты готов поделиться исходным кодом 5.00 M33?

Scorpeg
22.01.2015, 12:21
Scorpeg,
ты готов поделиться исходным кодом 5.00 M33?
А оно в прошивку разве вшито? Разве не плагином? Я не в курсе, как прошивки работают, но предполагал, что для плагина отдельный файл и его надо только прописать в прошивке вместо какого-нибудь из существующих.

Scorpeg добавил 22.01.2015 в 12:21
Scorpeg, это всё очень мило, но зачем и почему не обновиться?
Потому что IRShell с полной поддержкой всяких плюшек мне ценнее всего остального. Ну и влом карту памяти форматить и прочая байда. Так-то вообще пофигу, всё работает, кроме FF:Type0 (для которой и нужен этот драйвер), поэтому смысла обновляться вообще не вижу.

Yoti
22.01.2015, 13:38
Scorpeg,
на прометее вроде работает ff0.

Scorpeg
22.01.2015, 13:43
Работать-то работает, видеоролики не все грузит.

Вы мне по делу скажите, если кто прошивки ковырял, как там эти драйверы сделаны и можно ли перетащить.

Yoti
22.01.2015, 14:16
Scorpeg,
в виде модулей прошивки. При наличии исходников - без проблем. Без оных ковыряться не рационально.

А ты раздельную версию на двух дисках проверял? Оно должно и так идти нормально.

Scorpeg
22.01.2015, 17:54
Раздельную не проверял. Да и мне чисто для интереса заинтегрировать так-то. Сурсы дарк алекс вроде не оставил. Раз оно в виде модулей прошивки, то я переименую например инферно в модуль от сони и оно полетит, нет? Он вряд ли же пользуется какими-то точками, которых нет в M33. Дайте чтоли линк на распаковщик прошивок какой-нить.

ErikPshat
22.01.2015, 23:37
Раз оно в виде модулей прошивки, то я переименую например инферно в модуль от сони и оно полетит, нет?Можно попробовать заменить kd/march33.prx драйвером от PRO kd/inferno.prx, сменив соответственно название файла.
Просто так скорее всего работать не будет, но у PRO есть исходники (procfw\ISODrivers\Inferno), где для разных прошивок нужно менять смещения патчей. Туда нужно дописать смещения для FW_500.
#ifdef CONFIG_660
PatchOffset g_660_offsets = {
.fw_version = FW_660,
.patches = {
0x00003FEC,
0x00004024,
0x000040D8,
0x000042B4,
},
};
#endif

#ifdef CONFIG_639
PatchOffset g_639_offsets = {
.fw_version = FW_639,
.patches = {
0x00004020,
0x00004058,
0x0000410C,
0x000042E8,
},
};
#endif

#ifdef CONFIG_635
PatchOffset g_635_offsets = {
.fw_version = FW_635,
.patches = {
0x00004020,
0x00004058,
0x0000410C,
0x000042E8,
},
};
#endif

#ifdef CONFIG_620
PatchOffset g_620_offsets = {
.fw_version = FW_620,
.patches = {
0x00004020,
0x00004058,
0x0000410C,
0x000042E8,
},
};
#endif

Дайте чтоли линк на распаковщик прошивок какой-нить.Я обычно распаковываю прошивки вручную. Достаёшь DATA.PSP от установщика прошивки 5.00M33-6 и по очереди дербанишь модули и ресурсы. Всё примитивно, находишь начало файла ~PSP и от начала в позиции 0x2C записан размер файла, и выдёргиваешь/вставляешь таким образом файлы.

P.S. У Yoti есть своя тулза, которая дербанит автоматом файл...

Scorpeg
23.01.2015, 10:18
Так, ну более-менее ясно. Так-то у них лежат уже отреверсенные смещения под M33 - http://sourceforge.net/mirror/procfw/code/ci/default/tree/ISODrivers/March33/README.txt так что по идее это 4 места пропатчить в инферно, переименовать в march33.prx и должно полететь. Жалко, у меня самого ни времени ни psp пока нет, мож если кому-то интересно самому попробовать - отпишите по результатам.

Yoti
23.01.2015, 10:26
Дайте чтоли линк на распаковщик прошивок какой-нить.
Забирай из аттача. Если разберёшься - пользуйся. Объяснять ничего не буду.

P.S. У Yoti есть своя тулза, которая дербанит автоматом файл...
=)

Scorpeg
23.01.2015, 11:59
Да у тебя мануал есть :) Разберусь, времени бы только...

Кстати, а ведь есть же доступ напрямую во флеш-память с прошивкой, да? То есть я могу тупо файл поменять, ничего не перешивая?

Scorpeg добавил 23.01.2015 в 11:59
Хм, интересно, откуда они выковыряли этот M33 драйвер в про-прошивку, потому что в 5.00-6 он другой, меньше на 2 байта. И смещения какие-то другие воткнуты. Что вообще патчит этот патчер, кстати? Ну то есть что он туда пихает по этим оффсетам? А то это не прошивка, а какой-то один сплошной патч.

Они тоже чтоли криптованы? А то хекс сравнением вообще ни одного символа одинакового рядом.

Yoti
23.01.2015, 12:09
То есть я могу тупо файл поменять, ничего не перешивая?
Можешь. Про Пандору не забудь.

Хм, интересно, откуда они выковыряли этот M33 драйвер в про-прошивку, потому что в 5.00-6 он другой, меньше на 2 байта.
Отреверсили (https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0% D0%B1%D0%BE%D1%82%D0%BA%D0%B0).

А то это не прошивка, а какой-то один сплошной патч.
Внезапно (https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B7%D0%B8%D0%B4%D0%B5%D0%BD%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80% D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0).

Scorpeg
23.01.2015, 12:15
Ниче они не реверсили, там сурсов нет. Там лежат тупо prx файлы, которые они выдрали из какой-то из прошивок dax'a. Вопрос вот из какой? И почему они разных размеров (ну это видимо потому что запакованные и закриптованные, а 6.60 уже лежит в ELF распакованным)?

Scorpeg добавил 23.01.2015 в 12:15
Можешь. Про Пандору не забудь.
У меня три PSPшки так-то дома лежат, так что не проблема.

Внезапно
И у дакса тоже чтоли? Фиии.... Я-то думал они по-взрослому разобрали сонивские апдейты, сломали шифрование, отреверсили нужные плаги...

Yoti
23.01.2015, 12:36
Scorpeg,
резидентная программа не нарушает законы большинства стран, что даёт возможность её открытой публикации не боясь юридического преследования. Все кастомы не изменяют официальных файлов, кроме разве что очень старых, и то не в счёт. Плюс, сохраняется целостность подписи официальных модулей. Без реверса официальных модулей, а также анализа оперативной памяти нельзя написать резидента. Что, в целом, оффтоп в данной теме. Есть интерес ковырять - отправляйся в "Хакинг".

Обновил тему по мелочи.

ErikPshat
24.01.2015, 05:01
Так, ну более-менее ясно. Так-то у них лежат уже отреверсенные смещения под M33 - http://sourceforge.net/mirror/procfw/code/ci/default/tree/ISODrivers/March33/README.txt так что по идее это 4 места пропатчить в инферно, переименовать в march33.prx и должно полететь.Оу, ну тогда вообще ничего делать не надо, всё уже на блюдечке с голубой каёмочкой.

И почему они разных размеров (ну это видимо потому что запакованные и закриптованные, а 6.60 уже лежит в ELF распакованным)?Хмм, по-моему ты что-то пропустил: http://www.pspx.ru/forum/showthread.php?t=76183

Scorpeg
24.01.2015, 16:51
Почему пропустил? Как бы я наоборот так и сказал, нет? Перефразирую - странно то, почему у них march33.prx упакованный отличается от march33.prx в моей прошивке. Они его зачем-то перепаковали чтоли? Или в какой-то другой прошивке есть такой же march33.prx как у них в репе?

А вообще Yoti ругается, надо оффтоп в хакинг наверное переносить.

ErikPshat
24.01.2015, 18:25
странно то, почему у них march33.prx упакованный отличается от march33.prx в моей прошивке.Так при чём тут упакованный? Можно один и тот же файл заархивировать в GZIP с разной степенью сжатия. Отсюда 2 абсолютно одинаковых Эльфа будут в упакованном виде абсолютно разные, как по размеру, так и по содержанию. Они могут выглядеть по-разному, даже если исходники были одинаковые, но компилировали Эльф разными компиляторами.

Scorpeg
24.01.2015, 22:02
Ну копетан очевидность, я ж говорю "Они его зачем-то перепаковали чтоли?" Смысл сего действа какой - распаковать, потом назад упаковать и заэнкриптить и в таком виде положить в репу? Странно это. Сурсов на елф у них нету, они ничего не компилили.

ErikPshat
26.01.2015, 01:49
я ж говорю "Они его зачем-то перепаковали чтоли?"у них march33.prx упакованный отличается от march33.prx в моей прошивкеПогоди, я ничего не понимаю.
Когда ты говоришь, что "у них march33.prx упакованный отличается" от "march33.prx в моей прошивке", то про какую свою прошивку ты говоришь?
Я так понимаю, как экстрасенс, что твоя прошивка, написанная в профиле - 5.00 М33-6.
А у них (Dark_Alex) последняя прошивка так же 5.00 М33-6.

Если ты сравниваешь march33.prx от 5.00 М33-6 c таким же драйвером от 6.хх прошивок, то это неудивительно, что они разные изнутри и снаружи. Ведь прошивки 6.хх делала другая команда и у них код устроен совершенно по другому. Они просто отреверсили прошивку Дарк Алекса и по аналогии восстановили принцип работы драйвера. Ведь одно и то же действие программы можно реализовать разными способами программирования.

Scorpeg
26.01.2015, 19:32
Моя прошивка - это которая в профиле, логично. Они - это авторы этого инферно драйвера, про который и говорил - т.е. PRO едишн. У Про лежит в репозитории оригинальная march33.prx, с которой они делали для 6.x прошивок. Я про нее говорю. Она не совпадает с 5.00m33-6, что странно (её же не рекомпилировали). Мож они прям взяли от 5.00 другой версии? https://code.google.com/p/procfw/source/browse/ISODrivers/March33/

Yoti
27.01.2015, 00:13
Scorpeg,
во-первых, учимся читать примечания на коммиты. Во-вторых, удалю весь оффтоп нафиг.

Scorpeg
27.01.2015, 10:56
Точно, ты прав, не прочитал коммент к коммиту. Тогда всё понятно.

Я вообще уже не раз предлагал это разделить куда-нибудь в хакинг, чето меня ни модераторы ни админы не слушают :) Удалять-то не надо, вроде как бы полезная инфа кому-то может быть.

ErikPshat
27.01.2015, 19:40
Точно, ты прав, не прочитал коммент к коммиту. Тогда всё понятно.
Ну судя по твоим вопросам про march33.prx, я так понял, что ты ничего не понял :)
Сегодня не поленился и проверил, что за march33.prx там лежат: https://code.google.com/p/procfw/source/browse/ISODrivers/March33/
Там лежат 3 файла:

march33.prx
march33_620.prx
march33_660.prx

Я их проверил и сравнил. Они все 3 одного размера по 15022 байта, точно так же, как и в прошивке 5.00 М33-6.
При сравнении в хексе, видно, что конечно их никто не компилил, а только подменены значения NID-ов в соответствии с версией прошивки.
Вот скрин сравнения march33.prx от 5.00 М33-6 и march33.prx, который у них там лежит:

10595

Смотрим README.txt: https://code.google.com/p/procfw/source/browse/ISODrivers/March33/README.txt. Внизу там есть такие строчки: Patch offsets for sceIsofs_Driver:
5.00 6.20 6.35 6.60
404C 4020 4020 3FEC
4084 4058 4058 4024
4138 410C 410C 40D8
4314 42E8 42E8 42B4
На скрине видим различия, выделенные желтым цветом. 5.00 М33-6 (сверху) и march33.prx (снизу)

В позиции 0х14C4 сверху 404C снизу 4020 (байты задом наперёд Little Endian)
В позиции 0х14C8 сверху 4084 снизу 4058
В позиции 0х14CC сверху 4138 снизу 410C
В позиции 0х14D4 сверху 4314 снизу 42E8

Смотрим на цифры в коде "Patch offsets for sceIsofs_Driver" и делаем выводы. Значения сверху ессно совпадают с прошивокй 5.00, а значения снизу совпадают с прошивками 6.20 и 6.35.


Идём дальше... Следующий различающийся кусок сравнения в хексе. С первого взгляда, вроде целая куча недоразумений:

10596

Но если разглядывать этот массив расхождений 4-байтовыми кусками, тогда картина становится произведением Репина...
Смотрим README.txt: https://code.google.com/p/procfw/source/browse/ISODrivers/March33/README.txt. Выделяем с начала вот этот массив: 5.00 6.20 6.35 6.60
sceUmd_2B9A7E2E -> sceUmd_F60013F8 -> sceUmd_7E185F98 -> sceUmd_982272FE
sceUmd_79EF9E56 -> sceUmd_9F53CFA1 -> sceUmd_47B447E5 -> sceUmd_BA3D2A5F
sceUmd_E9586C03 -> sceUmd_E70E8FFB -> sceUmd_8213F674 -> sceUmd_A9B5B972
sceUmd_51C04466 -> sceUmd_74145046 -> sceUmd_FAAA2DC6 -> sceUmd_98AFBD10
sceUmd_F7C6E4D9 -> sceUmd_6592E954 -> sceUmd_F0E95430 -> sceUmd_8DCFBA06
sceUmd_10542751 -> sceUmd_004F4BE5 -> sceUmd_24E838BA -> sceUmd_040A7090
sceUmd_25B21837 -> sceUmd_1BA5BAFB -> sceUmd_749B5538 -> sceUmd_666580EA
sceUmd_30DCD985 -> sceUmd_B1641203 -> sceUmd_B1E889EB -> sceUmd_4F017CDE
sceUmd_3DD57F37 -> sceUmd_7E6182C7 -> sceUmd_3F826E9B -> sceUmd_07E98AF8
sceUmd_6404E484 -> sceUmd_5083C012 -> sceUmd_58708431 -> sceUmd_5EBB491F
sceUmd_0743D00D -> sceUmd_51C95C02 -> sceUmd_6E350FE4 -> sceUmd_598EC4DC
sceUmd_36FF82F3 -> sceUmd_70D9B731 -> sceUmd_E34F613F -> sceUmd_0B14CE61
sceUmd_0F2D9908 -> sceUmd_2D5CB292 -> sceUmd_7E45DF26 -> sceUmd_B7BF4C31
sceUmd_085E7AFF -> sceUmd_B826BD59 -> sceUmd_507AB2B8 -> sceUmd_6EDF57F1
sceUmd_F8E0D303 -> sceUmd_35B13E16 -> sceUmd_145DBD8C -> sceUmd_18E225C8

В позиции 0х1F60 сверху 2B9A7E2E снизу 7E185F98 (байты задом наперёд Little Endian)
В позиции 0х1F64 сверху 79EF9E56 снизу 47B447E5
В позиции 0х1F68 сверху E9586C03 снизу 8213F674
В позиции 0х1F6C сверху 51C04466 снизу FAAA2DC6
В позиции 0х1F70 сверху F7C6E4D9 снизу F0E95430
В позиции 0х1F74 сверху 10542751 снизу 24E838BA
В позиции 0х1F78 сверху 25B21837 снизу 749B5538
В позиции 0х1F7C сверху 30DCD985 снизу B1E889EB
В позиции 0х1F84 сверху 3DD57F37 снизу 3F826E9B
В позиции 0х1F88 сверху 6404E484 снизу 58708431
В позиции 0х1F8C сверху 0743D00D снизу 6E350FE4
В позиции 0х1F94 сверху 36FF82F3 снизу E34F613F
В позиции 0х1F98 сверху 0F2D9908 снизу 7E45DF26
В позиции 0х1FA0 сверху 085E7AFF снизу 507AB2B8
В позиции 0х1FA4 сверху F8E0D303 снизу 145DBD8C

О чудо, циферки расположены в том же порядке, как они записаны в README. И, как видно из нижнего файла march33.prx, все NID-ы принадлежат прошивке 6.35.


Идём дальше... Следующий различающийся кусок сравнения в хексе:

10597

Смотрим снова README.txt: https://code.google.com/p/procfw/source/browse/ISODrivers/March33/README.txt. Выделяем оставшуюся часть массива: 5.00 6.20 6.35 6.60
sceUmdMan_driver_B9B02322 -> sceUmdMan_driver_6A1FB0DD -> sceUmdMan_driver_E52119E7 -> sceUmdMan_driver_34375DB0
sceUmdMan_driver_31699C86 -> sceUmdMan_driver_7DF4C4DA -> sceUmdMan_driver_7AD43944 -> sceUmdMan_driver_A7536109
sceUmdMan_driver_988597A2 -> sceUmdMan_driver_F7A0D0D9 -> sceUmdMan_driver_42D993AC -> sceUmdMan_driver_65E2B3E0
sceUmdMan_driver_63B69CE1 -> sceUmdMan_driver_4FFAB8DA -> sceUmdMan_driver_26C75616 -> sceUmdMan_driver_3C8C523D
sceUmdMan_driver_B54D5BE8 -> sceUmdMan_driver_D37B6422 -> sceUmdMan_driver_454E1B06 -> sceUmdMan_driver_80D31D5D

sceUmd9660_driver_7BF6DE7C -> sceUmd9660_driver_63342C0F -> sceUmd9660_driver_385336B5 -> sceUmd9660_driver_887C3193
sceUmd9660_driver_B15139FE -> sceUmd9660_driver_6FFFEE54 -> sceUmd9660_driver_1D89BD8F -> sceUmd9660_driver_C0933C16
sceUmd9660_driver_DF36DCB6 -> sceUmd9660_driver_7CB291E3 -> sceUmd9660_driver_94ACF219 -> sceUmd9660_driver_7EB57F56

В позиции 0х2060 сверху B9B02322 снизу E52119E7 (байты задом наперёд Little Endian)
В позиции 0х2064 сверху 31699C86 снизу 7AD43944
В позиции 0х2068 сверху 988597A2 снизу 42D993AC
В позиции 0х206C сверху 63B69CE1 снизу 26C75616
В позиции 0х2070 сверху B54D5BE8 снизу 454E1B06
В позиции 0х2088 сверху 7BF6DE7C снизу 385336B5
В позиции 0х208C сверху B15139FE снизу 1D89BD8F
В позиции 0х2090 сверху DF36DCB6 снизу 94ACF219

И, как видно из нижнего файла march33.prx, все NID-ы принадлежат прошивке 6.35. На этом все различия в файлах заканчиваются.
Отсюда можно смело сделать вывод, что на сайте у PRO лежит файл march33.prx от прошивки 6.35 и соответственно файл march33_620.prx от прошивки 6.20, и march33_660.prx от прошивки 6.60. Вот почему march33.prx у PRO не совпадал с файлом твоей прошивки 5.00 М33-6.

Scorpeg
28.01.2015, 00:04
Четко. Я на самом деле просто почему-то решил, что march33 там оригинальный лежит - это и была моя ошибка, остальное я всё ровно так же и понял, как ты расписал. Поэтому и удивлялся, кому ж это понадобилось пережимать оригинальный файл.