Trucha Bug: Unterschied zwischen den Versionen

Aus WiiDatabase Wiki
Zur Navigation springenZur Suche springen
371 Bytes hinzugefügt ,  13. April 2019
KKeine Bearbeitungszusammenfassung
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 2: Zeile 2:


== Erklärung ==
== Erklärung ==
Zuerst entschlüsselt IOS bei der Installation eines Titels die Signatur und vergleicht die SHA1 des Payloads mit einem anderen Hash in der Signatur - das erste Problem hierbei ist, dass der Payload-Hash ein binärer SHA1-Hash ist und kein ASCII-String und deshalb ein NULL-Byte ("\0") enthalten kann. Das weitaus größere Problem ist jedoch, dass zum Vergleichen der Hashes die C-Funktion ''[http://www.cplusplus.com/reference/cstring/strncmp/ strncmp]'', statt ''[http://www.cplusplus.com/reference/cstring/memcmp/ memcmp]'' benutzt wird, welche Strings vergleicht und beim ersten NULL-Byte stoppt:
Zuerst entschlüsselt IOS bei der Installation eines Titels die Signatur und vergleicht die SHA1 des Payloads mit dem SHA1-Hash in der Signatur - das erste Problem hierbei ist, dass der Payload-Hash ein binärer SHA1-Hash ist und kein ASCII-String und deshalb ein NULL-Byte (<code>\0</code>) enthalten kann. Das weitaus größere Problem ist jedoch, dass zum Vergleichen der Hashes die C-Funktion ''[http://www.cplusplus.com/reference/cstring/strncmp/ strncmp]'', statt ''[http://www.cplusplus.com/reference/cstring/memcmp/ memcmp]'' benutzt wird, welche Strings vergleicht und beim ersten NULL-Byte stoppt:


{{Zitat|Text=This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, '''until a terminating null-character is reached''', or until num characters match in both strings, whichever happens first.}}
{{Zitat|Text=This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, '''until a terminating null-character is reached''', or until num characters match in both strings, whichever happens first.}}


=== Fakesigning ===
=== Fakesigning ===
Das heißt, wenn strncmp auf ein NULL-Byte trifft, vergleicht es nicht mehr weiter, '''selbst wenn mehr Daten hinter dem NULL-Byte existieren'''. Hier kann einfach auf Bruteforcing zurückgegriffen werden: Einige Bytes der Daten werden geändert, bis der SHA-1-Hash mit 00 anfängt - die strncmp-Funktion bricht ab und die Signatur ist valide. Wenn dieser Fehler in boot1 ausgenutzt wird, lässt sich der boot2 modifizieren - der HackMii Installer nutzt dies, um [[BootMii]] dort zu installieren. Fakesigning erlaubt es letztendlich, unsignierte IOS und Systemmenüs zu installieren, sowieso unsignierte Spiele zu starten.
Das heißt, wenn strncmp auf ein NULL-Byte trifft, vergleicht es nicht mehr weiter, '''selbst wenn mehr Daten hinter dem NULL-Byte existieren'''. Hier kann einfach auf Bruteforcing zurückgegriffen werden: Einige Bytes der Daten werden geändert, bis der SHA-1-Hash mit <code>00</code> anfängt. Auch muss die Signatur genullt werden, da diese dann entschlüsselt null ergibt (da <code>Signatur hoch Public-Key-Exponent modulo Public-Key-Modulo</code> gleich <code>0</code> ergibt, eine Eigenschaft von RSA). Die strncmp-Funktion schließt das Vergleichen vorzeitig ab und die Signatur ist valide. Wenn dieser Fehler in boot1 ausgenutzt wird, lässt sich der boot2 modifizieren - der HackMii Installer nutzt dies, um [[BootMii]] dort zu installieren. Fakesigning erlaubt es letztendlich, unsignierte IOS und Systemmenüs zu installieren, sowieso unsignierte Spiele zu starten.


== Fix ==
== Fix ==
Zeile 19: Zeile 19:


== Weblinks ==
== Weblinks ==
* [https://wiibrew.org/wiki/Signing_bug Signing bug] auf WiiBrew
* [https://www.youtube.com/watch?v=ktc1XHvrN18&t=50s 25C3: Console Hacking 2008: Wii Fail - Part 4] von 0:50 bis 3:15
* [https://www.youtube.com/watch?v=ktc1XHvrN18&t=50s 25C3: Console Hacking 2008: Wii Fail - Part 4] von 0:50 bis 3:15


{{Navbox IOS}}
{{Navbox IOS}}
{{Top Icon Wii}}
{{Top Icon Wii}}
[[Kategorie:IOS]]
[[Kategorie:Nintendo Wii]]

Navigationsmenü