YAGAMI55, да забей, у тебя думаю не получится. После ContentID идёт рандомный ключ "Digest" 16 байт. Затем идут 2 хеша по 16 байт. Итого 3 строчки ключей.
- Первая строка - рандомный ключ 16 байт
- Вторая строка - хеш "Названия файла" вместе с расширением 16 байт
- Третья строка - хеш всех предыдущих строк секции NPD, включая ключи первой и второй строки.
Вот и вся махинация. Эта секция NPD генерируется точно так же, как EDAT.
Открой любой EDAT, например LIC.EDAT, подписанный моей утилитой make_npdata из моей утилиты "PS3GameConvert_v091".
Ты увидишь в начале Magik Header - NPD. Не правда ли какое удивительное сходство с тем, что имеется в SPRX и EBOOT?
Затем смотри далее, ты увидишь ContentID игры в этом EDAT.
А следом ты увидишь, после строчки с нулями вроде бы, эти 3 странные строки, заполненные какими-то данными. Вот про них я и говорю, про эти 3 ключа по 16 байт. Причём в первом ключе там написан копирайт нашего сайта
что-то типа "
GoodLuckFromPSPx" (точно дословно не помню уже) - это и есть первый рандомный ключ 16 байт.
Далее идёт строка с хешем 16 байт. Она генерируется от названия файла с расширением "NTJOBCODE.PPU.SPRX".
Далее третья строка с хешем, которая потом берёт предыдущие 0x60 байт и генерирует контрольную сумму 16 байт.
И следом идёт ещё строка, обычно забита нулями - это 8 байт "времени подписи" и ещё 8 байт тоже какого-то времени, всего 16 байт Но они не используются, поэтому нулевые.
А дальше, этот заголовок секции NPD, больше ничем похоже не проверяется. Нам туда лезть не следует, там идёт шифрованное тело файла с метаданными и прочей хнёй. Там есть ещё проверочные хеши, но это отдельно хеш только секции метаданных и т.д.
Так вот, тебе же надо подменить ContentID одной игры на другую. У тебя сразу изменится хеш 3-го ключа. Усекаешь?
Первй рандомный ключ уже вставлен готовый, но у тебя именно с ним могут возникнуть проблемы, я тебе ниже объясню.
Второй хеш уже и так готовый под название этого файла.
Как тебе подсчитать этот 3-ий хеш? Ты ведь подменил ContentID на другой.
А ответ я тебе уже говорил - нужно воспользоваться утилитой make_npdata
и подписать любой файл, пусть даже пустой, с новым ContentID и теми же параметрами, как у подопытного. Но название этого пустого файла должно быть при подписи указываться такое же - "
NTJOBCODE.PPU.SPRX".
А параметры я смотрю у файла такие:
NPD Version = 1
License Types = 3 Free License
Content ID = как записано в LIC.EDAT при конвертировании дисковой версии. Ты не забыл ещё? У нас при конвертировании там записывается вот что (смотри исходники "PS3GameConvert_v091"):
echo. Encrypting LIC.DAT to LIC.EDAT:
echo.
%tools%\sfk partcopy "%DEST%\%NAME%\USRDIR\EBOOT.BIN" 0x450 0x24 %temp%\6.tmp -yes
echo.
set /p contentID=<%temp%\6.tmp
set cID=%contentID:~0,7%%DIRNAME%%contentID:~16,20%
%tools%\make_npdata -e LIC.DAT "%DEST%\%DIRNAME%\LICDIR\LIC.EDAT" 1 1 3 0 16 3 00 %cID% 1
echo. LIC.EDAT succesfully encripted.
То есть, это 0x24 байта берутся из EBOOT.BIN апдейта из позиции 0x450. Где вместо cID вставляется вот это cID=%contentID:~0,7%%DIRNAME%%contentID:~16,20%. То есть, в этот ContentID вставляется вместо %DIRNAME% - TitleID игры NP, например NPUB12345.
Так вот, генерируешь EDAT с такими параметрами и получаешь готовую секцию NPD с тремя хешами.
Первый 16 байт - рандомный набор цифр - типа "
GoodLuckFromPSPx"
Второй 16 байт - хеш названия генерируемого файла
Третий 16 байт - хеш всего заголовка NPD с новым ContentID (0x60 байт).
Теперь забираешь этот блок и вставляешь в SPRX.
Затем, в конце файла, если ты не забыл, нужно подсчитать новую контрольную сумму всего файла, минус 0x30 байт. Это последние 8 байт от SHA-1.
Уфф, не хотел отвечать на нубские вопросы, знал, что придётся много объяснять
in1975, вот что ты за скриншоты хекс-редактора выкладываешь?
Я же буквально в предыдущих постах объяснял по несколько раз, что одна строка 16-ричного кода - это 16 байт.
А ты выкладываешь скриншоты, где у тебя в строке 24 байта.
У тебя же съехали все смещения, нарушилось 0x10 выравнивание и код становится нечитаемой кашей. Ну как можно так читать код?
И закрой ты все лишние окна, которые пустые и в данном случае не нужны и вообще очень редко используются - это слева выезжающее окно "Data Visualiser", потом "Structures" и справа "Data Inspector".