PlayStation 3 Hacking Memorandum by Bit Edits.
- Intro
- PS3 Models
- PS3 SDK
- PS3 Firmware
- PS3 Emulation of PS2 and PS1
- RPCS3 Emulator
- Пакетування PUP/PKG/SELF ключами OFW 3.55
- Бекап SSD
- Клонування BD
- Open Source PS3 Light SDK
- OpenGL driver for RSX
- RSX Driver for X.org
- T2 SDE Linux
Якщо ви читаєте цей документ, значить, ви або досліджуєте старі комп’ютерні системи, або займаєтеся демосценою для ретро-консолей, або вивчаєте мікропроцесорні архітектури, або просто захоплюєтеся ретро-технологіями.
Світ консолей багато в чому схожий на демосцену, де розробники працюють в умовах обмежених ресурсів. Для PS3 це двоядерний процесор PPC з 8 DSP-модулями та графічний прискорювач GTX 780. Ця консоль стала важливим етапом в історії OpenGL ES і знаменувала перехід від MIPS-архітектури PlayStation 2 — останньої MIPS-консолі після PS1 і N64.
PS3 здобула культовий статус серед науковців, які використовували її для швидкого перетворення Фур'є в астрофізичних дослідженнях. В університетах на її базі будували суперкомп’ютери, а разом із ігровою сценою залишилося чимало симулятивних фреймворків, які й досі можуть бути корисними для навчання.
Варто зазначити, що з юридичної точки зору вам заборонено дизасемблювати код корпорацій і займатися реверс-інжинірингом (не кажучи вже про завантаження ROM-файлів з інтернету). Однак вам дозволено переглядати код на Github.
На щастя, всі ROM-файли PS3 знаходяться у відкритому доступі, тож, на відміну від Nintendo 64, вам не доведеться використовувати програматори чи зчитувачі ROM. Ви можете мати консоль із прошивкою 3.50, офіційно встановити на неї Linux і запускати власний код. Також вам не заборонено створювати резервні копії BD-дисків для запуску в емуляторі RPCS3.
Будь-яка інформація, що розкриває внутрішні дані Sony, має юридичні обмеження, тому варто уникати її використання у легальних проєктах. Наукові дослідження, що базуються на відкритих джерелах і мають виключно освітню мету без комерційного інтересу, не створюють юридичних ризиків.
Огляд PS3 SDK надано у відповідному файлі: PS3-SDK.md.
Види і перелік PS3 Firmware надані у відповідному файлі: PS3-FW.md.
Про підтримку PS1 і PS2 ігор в Core OS на PS3 читайте у відповідному файлі: PS3-EMU.md.
Пакет програм ps3tools
містить наступні програми:
puppack
— утиліта запаковки Firmware (PUP).pupunpack
— утиліта розпаковки Firmware (PUP).cosunpkg
— утиліта розкодування SCE пакетів.cospkg
— утиліта кодування SCE пакетів.pkg
— утиліта запаковки PKG файлів.unpkg
— утиліта розпаковки PKG файлів.makeself
— утиліта запаковки ELF файлів в підписні SELF конверти.unself
— утиліта розпаковки ELF файлів з підписних конвертів SELF.scekrit
— утиліта обчислення похідних ключів.sceverify
— утиліта ECDSA перевірка цифрового підпису.
Кожна з цих програм використовує ключі, які знаходяться в папці ~/.ps3/
.
NOTE: Альтернативно до пакету програм ps3tools
можна використовувати утиліту ps3sce
, яка
подібна на оригінальну scetool
яка йшла з SCE SDK, конфігурація ключів в цій утіліті задається по-іншому.
PS3UPDAT.PUP:
dots.txt
fix_tar
license.xml
ps3swu.self
update_files.tar
update_flags.txt
version.txt
vsh.tar
update_files.tar:
BDIT_FIRMWARE_PACKAGE.pkg
BDPT_FIRMWARE_PACKAGE_301R.pkg
BDPT_FIRMWARE_PACKAGE_302R.pkg
BDPT_FIRMWARE_PACKAGE_303R.pkg
BDPT_FIRMWARE_PACKAGE_304R.pkg
BDPT_FIRMWARE_PACKAGE_306R.pkg
BDPT_FIRMWARE_PACKAGE_308R.pkg
BLUETOOTH_FIRMWARE.pkg
CORE_OS_PACKAGE.pkg
MULTI_CARD_FIRMWARE.pkg
RL_FOR_PACKAGE.img
RL_FOR_PROGRAM.img
SYS_CON_FIRMWARE_01000006.pkg
SYS_CON_FIRMWARE_01010303.pkg
SYS_CON_FIRMWARE_01020302.pkg
SYS_CON_FIRMWARE_01030302.pkg
SYS_CON_FIRMWARE_01040402.pkg
SYS_CON_FIRMWARE_01050002.pkg
SYS_CON_FIRMWARE_01050101.pkg
SYS_CON_FIRMWARE_S1_00010002083E0832.pkg
UPL.xml.pkg
dev_flash3_022.tar.aa.2010_11_27_051800
dev_flash_000.tar.aa.2010_11_27_051337
dev_flash_001.tar.aa.2010_11_27_051337
dev_flash_002.tar.aa.2010_11_27_051337
dev_flash_003.tar.aa.2010_11_27_051337
dev_flash_004.tar.aa.2010_11_27_051337
dev_flash_005.tar.aa.2010_11_27_051337
dev_flash_006.tar.aa.2010_11_27_051337
dev_flash_007.tar.aa.2010_11_27_051337
dev_flash_008.tar.aa.2010_11_27_051337
dev_flash_009.tar.aa.2010_11_27_051337
dev_flash_010.tar.aa.2010_11_27_051337
dev_flash_011.tar.aa.2010_11_27_051337
dev_flash_012.tar.aa.2010_11_27_051337
dev_flash_013.tar.aa.2010_11_27_051337
dev_flash_014.tar.aa.2010_11_27_051337
dev_flash_015.tar.aa.2010_11_27_051337
dev_flash_016.tar.aa.2010_11_27_051337
dev_flash_017.tar.aa.2010_11_27_051337
dev_flash_018.tar.aa.2010_11_27_051337
dev_flash_019.tar.aa.2010_11_27_051337
dev_flash_020.tar.aa.2010_11_27_051337
dev_flash_021.tar.aa.2010_11_27_051337
CORE_OS_PACKAGE.pkg:
aim_spu_module.self
appldr
creserved_0
default.spp
emer_init.self
eurus_fw.bin
hdd_copy.self
isoldr
lv0
lv1.self
lv1ldr
lv2_kernel.self
lv2ldr
manu_info_spu_module.self
mc_iso_spu_module.self
me_iso_spu_module.self
sb_iso_spu_module.self
sc_iso.self
sdk_version
spp_verifier.self
spu_pkg_rvk_verifier.self
spu_token_processor.self
spu_utoken_processor.self
sv_iso_spu_module.self
How to extract ELF from PKG from PUP using ps3tools:
pup x PS3UPDAT.PUP 3.55
unpkg -s 3.55/CORE_OS_PACKAGE.pkg temp
cosunpkg temp CORE_OS_PACKAGE.Content
unself CORE_OS_PACKAGE.Content/lv2_kernel.self lv2_kernel.elf
or simply:
./core_os_extractor.sh PS3UPDAT.PUP
./dev_flash_extractor_linux.sh PS3UPDAT.PUP flash
How to pack ELF into PKG into PUP:
Бекап SSD здійснюєтся за допомогою утиліти ps3xport
.