Following his previous Nucleus PS3 / PS4 PC emulator project, PlayStation 4 developer @AlexAltea (Twitter) recently kicked off a virtualization-based PS4 emulator called Orbital on Github with help from some other scene devs.
Keep in mind it's currently in the early stages and not ready for end-users, but they do have future plans for the emulator outlined for those following its progress.
Download: orbital-master.zip / GIT
To quote from the README.md: Orbital
Virtualization-based PlayStation 4 emulator.
Status
The current state of Orbital at booting decrypted kernels can be followed in the issue tracker: both PS4 4.55 and PS4 5.00 have been tested. You can also get ocasional updates and news via Twitter. Support this project at Patreon.
Future plans for the emulator can be found at the Roadmap page.
FAQ
How does Orbital work without having SAMU keys?
Until keys are dumped, decryption with SAMU will be "emulated" by hashing encrypted input blobs and returning decrypted blobs previously obtained from the actual console.
My kernel dump crashes shortly after booting. Why?
Kernel ELFs generated from memory dumps will not work since writable segments might have been modified into a state where booting is not possible. Please generate proper binaries offline by decrypting ELF segments with SAMU on your actual console, not by dumping memory.
Where can I get Orbital?
This project is not ready for end users. No binaries are provided, so you must build each of the three components (BIOS, GRUB, QEMU) yourself. Furthermore, configuring the emulator to do something will be hard, as you will need to dump and decrypt the entire PS4 filesystem and sflash, including the kernel. You might find hints on how to do this in the few scattered .sh files in this repo. Of course, in the future, I'll make this emulator more user-friendly.
Requirements
Thanks to all people who have directly or indirectly helped in making this possible. In no particular order: wildcard, flatz, idc, masterzorag, zer0xff, zecoxao, z80, x41. Also many anonymous folks and others who might have slipped my mind. You know who you are!
Cheers to @HydrogenNGU for the heads-up on Twitter earlier today!
PlayStation 4 Emulation on Orbital
Update: LibELF.js: Explore / Analyze ELF Files in a Browser by AlexAltea
Since his Orbital PS4 Emulator PlayStation 4 Virtualization developer @AlexAltea (Twitter) has made available LibELF.js with source code alongside a live demo page to explore / analyze ELF files in a Web browser using JavaScript.
Download: libelf.min.js / GIT / Live Demo / Tired's Home Page
To quote from the README.md: Libelf.js
Libelf port for JavaScript, a library to access ELF objects.
Installation
To add Libelf.js to your web application, include it with:
or install it with the Bower command:
Usage
Building
To build the Libelf.js library, clone the master branch of this repository, and do the following:
Keep in mind it's currently in the early stages and not ready for end-users, but they do have future plans for the emulator outlined for those following its progress.
Download: orbital-master.zip / GIT
To quote from the README.md: Orbital
Virtualization-based PlayStation 4 emulator.
Status
The current state of Orbital at booting decrypted kernels can be followed in the issue tracker: both PS4 4.55 and PS4 5.00 have been tested. You can also get ocasional updates and news via Twitter. Support this project at Patreon.
Future plans for the emulator can be found at the Roadmap page.
FAQ
How does Orbital work without having SAMU keys?
Until keys are dumped, decryption with SAMU will be "emulated" by hashing encrypted input blobs and returning decrypted blobs previously obtained from the actual console.
My kernel dump crashes shortly after booting. Why?
Kernel ELFs generated from memory dumps will not work since writable segments might have been modified into a state where booting is not possible. Please generate proper binaries offline by decrypting ELF segments with SAMU on your actual console, not by dumping memory.
Where can I get Orbital?
This project is not ready for end users. No binaries are provided, so you must build each of the three components (BIOS, GRUB, QEMU) yourself. Furthermore, configuring the emulator to do something will be hard, as you will need to dump and decrypt the entire PS4 filesystem and sflash, including the kernel. You might find hints on how to do this in the few scattered .sh files in this repo. Of course, in the future, I'll make this emulator more user-friendly.
Requirements
- OS: Windows, Linux.
- Processor: x86-64 CPU with AVX/AVX2 extensions.
- Memory: 16 GB RAM.
- Graphics: TBD.
Thanks to all people who have directly or indirectly helped in making this possible. In no particular order: wildcard, flatz, idc, masterzorag, zer0xff, zecoxao, z80, x41. Also many anonymous folks and others who might have slipped my mind. You know who you are!
Cheers to @HydrogenNGU for the heads-up on Twitter earlier today!
PlayStation 4 Emulation on Orbital
Update: LibELF.js: Explore / Analyze ELF Files in a Browser by AlexAltea
Since his Orbital PS4 Emulator PlayStation 4 Virtualization developer @AlexAltea (Twitter) has made available LibELF.js with source code alongside a live demo page to explore / analyze ELF files in a Web browser using JavaScript.
Download: libelf.min.js / GIT / Live Demo / Tired's Home Page
To quote from the README.md: Libelf.js
Libelf port for JavaScript, a library to access ELF objects.
Installation
To add Libelf.js to your web application, include it with:
Code:
<script src="libelf.min.js"></script>
Code:
bower install libelf
Code:
// var buffer = new Uint8Array([0x7F, 0x45, 0x4C, 0x46, ...]);
var elf = new Elf(buffer);
if (elf.kind() != "elf") {
throw "Not an ELF file";
}
var ehdr = elf.getehdr();
// Handle segments
for (var i = 0; i < ehdr.phnum; i++) {
var phdr = elf.getphdr(i);
}
// Handle sections
for (var i = 0; i < ehdr.shnum; i++) {
var scn = elf.getscn(i);
var shdr = elf.getshdr(scn);
var name = elf.strptr(
ehdr.e_shstrndx.num(),
shdr.sh_name.num());
To build the Libelf.js library, clone the master branch of this repository, and do the following:
- Install the latest Python 2.x (64-bit), CMake and the Emscripten SDK. Follow the respective instructions and make sure all environment variables are configured correctly. Under Windows MinGW (specifically mingw32-make) is required.
- Install the development dependencies with: npm install.
- Finally, build the source with: grunt build.