Сообщение от tukil
3. Переходим в PS3_GAME и проверяем там наличие папки LICDIR. Если ее нет, то читаем под спойлером.
Создание PS3_GAME\LICDIR\LIC.DAT В PS3_GAME создаем папку LICDIR.
Открываем в hex-редакторе LIC.DAT от любой игры, прокручиваем вниз до позиции 0x800, пока не найдем код игры (прокручивайте аккуратно, что бы не пропустить).

После того как нашли, заменяем его на код нашей игры, взятый из PARAM.SFO.
LIC.DAT CRC-32.png
Сохраняем и копируем готовый LIC.DAT в PS3_GAME\LICDIR.
P.S. Можно сгенрировать LIC.DAT с кодом игры из PARAM.SFO с помощью PS3 LIC.DAT Generator.
|
Вот здесь, думается, есть какой-то косяк.  После того, как в позиции 0x800 заменяем Title_ID на код нашей игры, взятый из PARAM.SFO, файл, по-идее, становится не легитимным, т.к. его контрольная сумма меняется.
А мы знаем, что: - В позиции 0x20 записаны хитрые 4 байта, которые и есть CRC 32bit - контрольная сумма тела лицензии, без учёта контрольной суммы.
- В позиции 0x10 записан адрес конца лицензии - обычно это 00 00 09 00, т.е. 0x900.
- В позиции 0x14 записан адрес начала Title_ID, например BLES00001 - это статический адрес и всегда равен 00 00 08 00, т.е. 0x800.
- В позиции 0x18 записан размер этой области от начала 0x800 до конца 0x900 - обычно равно 00 00 01 00, т.е. 0x100.
Короче, после смены Title_ID из PARAM.SFO игры, нужно подсчитать новую контрольную сумму лицензии, без учёта контрольной суммы. Для этого, обнуляем в позиции 0x20 старую чек-сумму 4 байта на 00 00 00 00. Выделяем код файла от начала по 0x900. И используем в хекс-редакторе функцию подсчёта CRC-32 выделенного фрагмента. И записываем в Big Endian (последовательно, не задом наперёд) сгенерированную новую чек-сумму в позицию 0x20.
Подробнее: Ручное создание LIC.DAT
Последний раз редактировалось ErikPshat; 03.06.2017 в 01:07.
|