В этом гайде будет вкратце описано о том, как сделать дамп процесса из памяти консоли.
1. Подготовка, требования
- консоль с прошивкой 1.70 или 1.76
- в случае, если консоль не активирована через PSN, то прокси-соединение через Charles, или др. методом
- PS4 Webkit Playground, например
http://www.extreme-modding.de/PS4/1....und/index.html
-
PS4FileNinja v2.0.0
* диск с игрой
* проводное\беспроводное соединение около 100мбит
2. Работа с консолью, дамп процесса
2.1 Заходим с консоли на playground, и в поле "Code Execution" нажимает кнопку "Start", после чего ждём изменения "Stage" на "Waiting for payload...";
2.2 Открываем PS4FileNinja, выбираем версию прошивки, вводим IP-адрес, нажимаем "Send payload" и если загрузка кода прошла успешно - "Connect to PS4";
2.3 Cворачиваем браузер кнопкой PS и запускаем игру, исполняемый файл которой хотим сдампить. Желательно зайти куда-нибудь в настройки игры, либо поставить её на паузу;
2.4 В PS4FileNinja открываем "Tools -> Processes", выбираем "eboot.bin" и нажимаем "Attach to PID";
2.5 Выбираем участки памяти, которые хотим сдампить через "Dump selected page", либо делаем полный дамп процесса (в том числе всех подгруженных игрой ресурсов) через "Dump all pages".
В
дампе, который я снял раньше части eboot.bin находятся в 0x46BE8000_0x47B2C000.bin, 0x47B2C000_0x47B90000.bin и 0x47B90000_0x47E34000.bin
3. Теория по воссозданию ELF
Мне удалось узнать некоторые подробности насчёт оригинального ELF файла, а именно:
1. Под заголовок зарезервировано 0x4000 байт, сам заголовок занимает 617 байт, и его можно скопировать из зашифрованного eboot.bin, различия в одном байте у оффсета 60.
2. Первая часть из дампа (0x46BE8000_0x47B2C000.bin) полностью совпадает с оригинальным ELF файлом.
3. Размер оригинального ELF - 17,219,584 байта.
4. Размер зашифрованного eboot.bin - 17,229,880 байт.
Методом тыка делаем "гибрид" из дампов памяти - склеиваем 3 части, добавляем в начало 0x4000 байт и копируем 617 байт ELF заголовка из зашифрованного eboot.bin. Получается
такая штука