Editing Vulnerabilities
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 8: | Line 8: | ||
== CD/DVD Swap tricks == | == CD/DVD Swap tricks == | ||
=== Swap Magic === | === Swap Magic === | ||
Line 43: | Line 37: | ||
Released on 15-08-2003 by Marcus R. Brown <mrbrown@0xd6.org>. | Released on 15-08-2003 by Marcus R. Brown <mrbrown@0xd6.org>. | ||
Homebrew programs can be launched directly from a Memory Card on unmodified consoles by using a certain software that takes advantage of a long known and used exploit, dealing with the boot part of the EE/IOP process (PS2 Independence exploit) | Homebrew programs can be launched directly from a Memory Card on unmodified consoles by using a certain software that takes advantage of a long known and used exploit, dealing with the boot part of the EE/IOP process (PS2 Independence exploit). | ||
See [[PS2 Independence]]. | See [[PS2 Independence]]. | ||
==== Tonyhax ==== | ==== Tonyhax ==== | ||
Tonyhax is a software loader exploit for the Sony PlayStation 1 that also works on earlier models of the PlayStation 2 | Tonyhax is a software loader exploit for the Sony PlayStation 1 that also works on earlier models of the PlayStation 2. Although the name "tonyhax" suggests a link with the Tony Hawk's game whose savedata vulnerability can be used as an entrypoint, Tonyhax works with all sort of entrypoints like modchips or FreePSXBoot on PS1 | ||
The SCPH-50XXX - SCPH-90XXX | The SCPH-50XXX - SCPH-90XXX PS2s are not supported by tonyhax because both SetSession() and the unlock commands do not function on these models. The laser re-calibration also seems to be ignored resulting in sub-optimal disc reading performance on the newer models. Technically it can still boot games but with no CD audio support and poor disc reading performance so it is not officially supported whatsoever. | ||
* https://orca.pet/tonyhax/ | * https://orca.pet/tonyhax/ | ||
* https://alex-free.github.io/tonyhax-international/ | * https://alex-free.github.io/tonyhax-international/ | ||
=== OSDSYS === | === OSDSYS === | ||
Line 155: | Line 131: | ||
To be documented. | To be documented. | ||
= Games = | = Games = | ||
Line 178: | Line 146: | ||
== Network games == | == Network games == | ||
It is possible to exploit | It is possible to exploit network-capable games, to inject codes. This is perfect for Slim PS2 and people which can not move files to the MC. | ||
TnA scarcely mentioned that method since January 2019, like it can be seen in the comments of @Haldrie's video about the time-swap. TnA got the basic idea from some discoveries someone else mentioned. | |||
The problem is to either inject it elsewhere, or find a way to run it. | |||
== | == PS1 Savedata exploits == | ||
The existing FreePSXBoot exploit chain for PS1 does not work on the PS2 (mainly inside mcman), due to the fact that the internal structure is different. | |||
In mcman, there is no bounds check on linked_block member access relative to arrays on stack: https://github.com/ps2dev/ps2sdk/blob/d976e57349645cb940a9e0f9ec0207c16472ca2c/iop/memorycard/mcman/src/main.c#L3041-L3072 | |||
The code looks similar in 3.1.0 (last) mcman modules. | |||
Briefly looking at it, it is possible to control where to write (basically positive 16 bit signed value), but not what value should be written (limited to 0-15). | |||
So a straightforward port of the FreePSXBoot chain is not possible. For working on this exploit, it would need to have knowledge of the thread stack layout at mcserv and afterwards, and possibly mirrored memory. | |||
= | See [https://psdevwiki.com/ps1/index.php?title=Vulnerabilities PS1 Dev Wiki Vulnerabilities]. | ||
=== BOOT.ELF (Fat PS2 consoles only) === | |||
[https://sksapps.haldrie.com/bootleg/tutorials/fmcb/armax2.php Official sp193 guide (backup)] | |||
There exists a vulnerability using a PS1 game as a 'boot' disc to load a modified savedata which in turn runs arbitrary code. This method allows for installation of homebrew such as FMCB. In order to utilize this vulnerability you would need a gameshark or similar cheat device to transfer the modded save over from USB and you also need a PC tool to make the savedata modifications and a USB pen drive to use as a medium to transfer the save data from PC>USB>MC. Once you place the modified PS1 game savedata onto a PS2 memory card, just load your boot disc, and voila. | |||
== PS2 Savedata exploits == | == PS2 Savedata exploits == | ||
Line 222: | Line 176: | ||
{| class="wikitable" | {| class="wikitable" | ||
|+ | |+ | ||
!Game/Application | !Game/Application | ||
!Vulnerability | !Vulnerability | ||
Line 230: | Line 183: | ||
!Discovered/exploited by | !Discovered/exploited by | ||
|- | |- | ||
|Carol Vorderman's Sudoku | |Carol Vorderman's Sudoku | ||
|Stack Buffer Overflow via unchecked string length | |Stack Buffer Overflow via unchecked string length | ||
Line 248: | Line 191: | ||
|ChampionLeake for PS2, Jeerum for PSP | |ChampionLeake for PS2, Jeerum for PSP | ||
|- | |- | ||
|OKAGE: Shadow King | |OKAGE: Shadow King | ||
|Stack Buffer Overflow via unchecked "Player/Town" name length | |Stack Buffer Overflow via unchecked "Player/Town" name length | ||
Line 256: | Line 198: | ||
|No | |No | ||
|September 14th, 2022 | |September 14th, 2022 | ||
|CTurt | |CTurt & McCaulay | ||
|- | |- | ||
|Star Wars Racer Revenge | |Star Wars Racer Revenge | ||
|Stack-Smash via unchecked "Record Name" length | |Stack-Smash via unchecked "Record Name" length | ||
Line 266: | Line 207: | ||
|ChampionLeake | |ChampionLeake | ||
|- | |- | ||
|GTA III and GTA Vice City Stories | |GTA III and GTA Vice City Stories | ||
|Stack Buffer Overflow via unchecked savedata size | |Stack Buffer Overflow via unchecked savedata size | ||
Line 274: | Line 214: | ||
[https://cturt.github.io/mast1c0re.html CTurt's writeup] | [https://cturt.github.io/mast1c0re.html CTurt's writeup] | ||
|Maybe in PSP version of GTA VCS and in GTA LCS PSP | |Maybe in PSP version of GTA VCS and in GTA LCS PSP | ||
| | |June 27th, 2020 | ||
| | |re3 decompilation project then CTurt | ||
|- | |- | ||
|Jak X: Combat Racing (PAL and NTSC, PAL has more symbols) | |Jak X: Combat Racing (PAL and NTSC, PAL has more symbols) | ||
|Two exploits: String Buffer Overflow via unchecked profile name length (implemented) and Custom code injection via patch.bin file (not implemented) | |Two exploits: String Buffer Overflow via unchecked profile name length (implemented) and Custom code injection via patch.bin file (not implemented) | ||
Line 287: | Line 226: | ||
=== Confirmed vulnerable games === | === Confirmed vulnerable games === | ||
==== Carol Vorderman's Sudoku ==== | ==== Carol Vorderman's Sudoku ==== | ||
Line 533: | Line 439: | ||
=== Possible vulnerable games === | === Possible vulnerable games === | ||
==== James Bond 007: Agent Under Fire ==== | ==== James Bond 007: Agent Under Fire ==== | ||
In 2003, a hacker named Habibi-Xbox discovered a method to make the Xbox run Linux software, using a buffer overflow in the load/save feature in the disc game Agent Under Fire. Habibi found that by using one of several USB storage devices recognized by the Xbox, the "load game" screen can also be used to load other software, including compact versions of the Linux operating system. The buffer overflow vulnerability is also present in the GameCube version of the game | In 2003, a hacker named Habibi-Xbox discovered a method to make the Xbox run Linux software, using a buffer overflow in the load/save feature in the disc game Agent Under Fire. Habibi found that by using one of several USB storage devices recognized by the Xbox, the "load game" screen can also be used to load other software, including compact versions of the Linux operating system. The buffer overflow vulnerability is also present in the GameCube version of the game and probably in the PS2 version too. | ||
==== Tony Hawk's games ==== | ==== Tony Hawk's games ==== | ||
Line 654: | Line 448: | ||
Tony Hawk's games on PS2: | Tony Hawk's games on PS2: | ||
* Tony Hawk's Underground | * Tony Hawk's Underground | ||
* Tony Hawk's Underground 2, | * Tony Hawk's Underground 2, as a remix on PSP (Tony Hawk's Underground 2: Remix) | ||
* Tony Hawk's Pro Skater 3, exploited | * Tony Hawk's Pro Skater 3, exploited on PS1 | ||
* Tony Hawk's Pro Skater 4, exploited | * Tony Hawk's Pro Skater 4, exploited on PS1 | ||
* Tony Hawk's American Wasteland | * Tony Hawk's American Wasteland | ||
* Tony Hawk's Downhill Jam | * Tony Hawk's Downhill Jam | ||
* Tony Hawk's Project 8, also on PSP and PS3 | * Tony Hawk's Project 8, also on PSP and PS3 | ||
* Tony Hawk's Proving Ground, also on PS3 | * Tony Hawk's Proving Ground, also on PS3 | ||
Since a lot of PS1, Microsoft Xbox, GameCube/DreamCast, and some PC Tony Hawk games (Tony Hawk's Pro Skater 2, 3 and 4) have been exploited successfully (see [https://www.psdevwiki.com/ps1/Vulnerabilities PS1 Dev Wiki]), since the source code of the PS2, Xbox, and GameCube versions of Tony Hawk's Underground game was leaked at | |||
* https://github.com/thug1src/thug | * https://github.com/thug1src/thug | ||
and since the Tony Hawk's games usually save strings in savedata, there is a good chance of finding a vulnerability inside a PS2 Tony Hawk game. | and since the Tony Hawk's games usually save strings in savedata, there is a good chance of finding a vulnerability inside a PS2 Tony Hawk game. | ||
==== Tony Hawk's Underground and Underground 2 ==== | ==== Tony Hawk's Underground and Underground 2 ==== | ||
* https://github.com/byxor/thug-pro-disassembly | * https://github.com/byxor/thug-pro-disassembly | ||
==== Tony Hawk’s Pro Skater 3 ==== | ==== Tony Hawk’s Pro Skater 3 and 4 ==== | ||
The following PS2 Tony Hawk's games contain debug symbols: | The following PS2 Tony Hawk's games contain debug symbols: | ||
* Tony Hawk’s Pro Skater 3 (Europe) SLES-50400 2001-09-19 | * Tony Hawk’s Pro Skater 3 (Europe) SLES-50400 2001-09-19 | ||
* Tony Hawk’s Pro Skater 3 (France) SLES-50401 2001-10-09 | * Tony Hawk’s Pro Skater 3 (France) SLES-50401 2001-10-09 | ||
* Tony Hawk’s Pro Skater 3 (Germany) SLES-50402 2001-10-07 | * Tony Hawk’s Pro Skater 3 (Germany) SLES-50402 2001-10-07 | ||
* Tony Hawk’s Pro Skater 3 (USA) SLUS-20199 2001-09-10 | * Tony Hawk’s Pro Skater 3 (USA) SLUS-20199 2001-09-10 | ||
* Tony Hawk’s Pro Skater 3 (USA) (Rev 1) SLUS-20199 2001-09-10 | * Tony Hawk’s Pro Skater 3 (USA) (Rev 1) SLUS-20199 2001-09-10 | ||
* Tony Hawk’s Pro Skater 4 (USA) (v1.02) SLPS-99999 2002-09-21 | |||
* Tony Hawk’s Pro Skater 4 (USA) (v2.01) SLPS-99999 2002-09-20 | |||
Tony Hawk's Pro Skater 4 on PS2 is likely exploitable the same way as on PS1, since even on Xbox it was exploited. | |||
PS1 exploit: | PS1 exploit: | ||
* See [https://www.psdevwiki.com/ps1/Vulnerabilities PS1 Dev Wiki]. | * See [https://www.psdevwiki.com/ps1/Vulnerabilities PS1 Dev Wiki]. | ||
Xbox exploit: | |||
* https://www.reddit.com/r/originalxbox/comments/69bqv7/tony_hawks_pro_skater_4_is_now_an_exploitable/?rdt=57523 | * https://www.reddit.com/r/originalxbox/comments/69bqv7/tony_hawks_pro_skater_4_is_now_an_exploitable/?rdt=57523 | ||
* https://github.com/Rocky5/Xbox-Softmodding-Tool/tree/master/Other/Game%20Saves/Extracted | * https://github.com/Rocky5/Xbox-Softmodding-Tool/tree/master/Other/Game%20Saves/Extracted | ||
* " | * "He said it was more advanced than the other exploits, but still a buffer overflow. Grimdoomer created a shellcode to make exploiting any game easier but currently has not released it due to getting hired by Microsoft. From a conversation we had: "I was just poking around some save games for null terminated strings, then fuzzed them, and then based on the results from fuzzing them I loaded the game into a disassembler and poked around to figure out where the buffer overflow was occurring and how big the stack was, etc." | ||
* https://www.youtube.com/watch?v=tH8DBq5-vUY | * https://www.youtube.com/watch?v=tH8DBq5-vUY | ||
On Xbox, there are 3 versions of the save, NTSC, PAL and Region Free. The PAL Classics edition of TH4 is Region Free, so requires the region free save. | |||
Original PAL games may be PAL or Region Free. The French version of TH4 requires the PAL save. | Original PAL games may be PAL or Region Free. The French version of TH4 requires the PAL save. | ||
1) Launch Tony Hawk | The steps to trigger the exploit on Xbox are: | ||
1) Launch "Tony Hawk Pro Skater 4" | |||
2) Select "Free Skate" | 2) Select "Free Skate" | ||
3) Select "Any Character" | 3) Select "Any Character" | ||
Line 754: | Line 500: | ||
9) Select "Play Park" | 9) Select "Play Park" | ||
10) The game should execute the shellcode, or crash if the exploit savedata is bad | 10) The game should execute the shellcode, or crash if the exploit savedata is bad | ||
==== Soul Calibur III ==== | ==== Soul Calibur III ==== | ||
Line 808: | Line 535: | ||
2. I had to restart the game. The game-save between chapters seemed to stop responding, so I turned it off. This corrupted the save file. | 2. I had to restart the game. The game-save between chapters seemed to stop responding, so I turned it off. This corrupted the save file. | ||
==== | ==== All FIFA games ==== | ||
FIFA06, FIFA08, FIFA Street 2 are vulnerable on Nintendo DS. See [https://github.com/CTurt/Dara DARA by CTurt]. | |||
Moreover, a lot of Electronics Arts games are vulnerable on PSP. | |||
==== Psychonauts ==== | ==== Psychonauts ==== | ||
Line 838: | Line 552: | ||
* SavedGame* file format is "\n"-separated with also bars (|) separators. On each line is a setting. Each setting is made of between 1 and three parts separated by bars. Table|<name>|<value>. The name part is mandatory. | * SavedGame* file format is "\n"-separated with also bars (|) separators. On each line is a setting. Each setting is made of between 1 and three parts separated by bars. Table|<name>|<value>. The name part is mandatory. | ||
* There is a digest check on psu-embedded files as the game says that the "profile is damaged" when the savedata is edited without precaution. Using pypsu by McCaulay, one can extract files contained in the psu, but there are even more digests as any SavedGame* file is detected as "Damaged Save Game" after editing it too much. The SavedGame* files start with a 16-byte MD5 hash of the following data. | * There is a digest check on psu-embedded files as the game says that the "profile is damaged" when the savedata is edited without precaution. Using pypsu by McCaulay, one can extract files contained in the psu, but there are even more digests as any SavedGame* file is detected as "Damaged Save Game" after editing it too much. The SavedGame* files start with a 16-byte MD5 hash of the following data. | ||
==== Lego games ==== | ==== Lego games ==== | ||
LEGO Star Wars II: The Original Trilogy and LEGO Indiana Jones: The Original Adventures use a custom checksum: | LEGO Star Wars II: The Original Trilogy and LEGO Indiana Jones: The Original Adventures use a custom checksum: | ||
Line 967: | Line 572: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
LEGO Star Wars may use the same checksum or no checksum at all. LEGO Batman: The Videogame may use the same checksum or the newer checksum: | |||
* Offset: 12 | |||
* Calc. Start: 16 | |||
* Calc. Length: Filesize - 16 | |||
<syntaxhighlight lang="csharp"> | |||
private int CalculateChecksum(byte[] data, int offset, int size) { | |||
* | int sum = -1; | ||
for (int i = 0; i < size; ++i) { | |||
sum *= 0x1000193; | |||
sum ^= data[offset++]; | |||
* | } | ||
return ~sum; | |||
} | |||
</syntaxhighlight> | |||
* | |||
= | |||
* | |||
= | |||
==== List of other games ==== | ==== List of other games ==== | ||
See [https://github.com/libretro/LRPS2/blob/main/resources/GameIndex.yaml a list of almost all PS2 games]. Some may be vulnerable. | See [https://github.com/libretro/LRPS2/blob/main/resources/GameIndex.yaml a list of almost all PS2 games]. Some may be vulnerable. |