Earlier this month PlayStation 4 Scene developer @illusion0001 made available on Github via Twitter a Py Patcher binary patching application for Linux and Windows users to aid in applying the various PS3 / PS4 console patches from the Patch Repository on Illusion's Blog.
Download: py-patch-linux.tar.gz (18.2 MB) / py-patch-windows.zip (8.58 MB - includes py-patch.exe) / GIT
Spoiler: Legacy Links
Illusion0001's Sponsors and Social Links
This comes following his previously released PS4 60FPS Game Patches with Aspect Ratio & Resolution Mods, Bloodborne PS4 EBOOT.BIN Patches and from the README.md: Py-Patcher
Simple Binary Patching for console games in Python.
Features
See syntax in example.yml:
Credits
Download: py-patch-linux.tar.gz (18.2 MB) / py-patch-windows.zip (8.58 MB - includes py-patch.exe) / GIT
Spoiler: Legacy Links
Illusion0001's Sponsors and Social Links
This comes following his previously released PS4 60FPS Game Patches with Aspect Ratio & Resolution Mods, Bloodborne PS4 EBOOT.BIN Patches and from the README.md: Py-Patcher
Simple Binary Patching for console games in Python.
Features
- Config like parsing support.
- Supports big and little endian architecture. (PS3 and PS4)
- Easy to read syntaxes.
See syntax in example.yml:
Code:
- game: test
app_ver: "01.03"
patch_ver: "1.0"
name: "test"
author: "test"
note: "tests"
arch: orbis
enabled: True # Todo: move this to a separate file
patch_list:
# - [ syntax ]
# - [ Cell Elf Base : 0x10000 ]
# - [ Orbis Elf Base : 0x400000 ]
# - [ Orbis only accepts disabled aslr address (i.e from PS4 Cheater, Ghidra or IDA). ]
# - [ patch_type, ElfAddr, "HexByteArray" (orbis or generic only) ]
- [ bytes, 0x40000c, "90 c3 be 00" ] # spaces doesn't matter
- [ utf8, 0x400004, "My utf8 string!" ]
- [ float32, 0x400018, 0.0333333333 ] # little endian
- [ float64, 0x400020, 0.5 ] # little endian
- [ bytes32, 0x400080, 0x60000000 ]
- [ bytes64, 0x400084, 0x6000000060000000 ]
# f32 = float
# f64 = double precision float
- game: "Game Title1"
app_ver: "01.00"
patch_ver: "1.0"
name: "Patch Title1"
author: "having skill"
note: "issues"
enabled: True # Todo: move this to a separate file
arch: cell
patch_list:
- [ utf8, 0x10000, "My utf8 string!" ]
- [ bytes32, 0x20080, 0x60000000 ]
- [ bytes64, 0x20080, 0x6000000060000000 ]
- [ bytes16, 0x20084, 0xF00D ]
- [ byte, 0x20088, 0xFF ]
- [ float32, 0x1002c, 0.5 ] # must be byte swapped to big endian
- [ float64, 0x20090, 0.5 ]
# f32 = float
# f64 = double precision float
- game: "Game Title3"
app_ver: "00.00"
patch_ver: "1.0"
name: "Patch Title4"
author: "having skill"
note: "issues"
enabled: True # Todo: move this to a separate file
arch: generic
patch_list:
- [ bytes, 0x20040, "60 00 55 00" ]
- [ float32, 0x20044, 0.5 ]
- [ float64, 0x20048, 0.5 ]
- [ utf8, 0x20050, "testing out the generic type text" ]
#- [ aob, "7265706c616365206d6531, "7265706c616365206d6532" ]
Code:
launcher.py -h
usage: launcher.py [-h] -f FILE -c CONFIG [-v] [-od] [-ci]
options:
-h, --help show this help message and exit
-f FILE, --file FILE The ELF file to be patched.
-c CONFIG, --config CONFIG
The configuration file.
-v, --verbose Enable Verbose Mode.
-od, --outputdate Append date and time to output directory.
-ci, --cibuild For running tests on buildbot.
- ShadowDog
- aerosoul94
- Add array of bytes support (find and replace)
- Move Patch Enabled field to auto generated file