D
darth_mickrig
Dauer-User
- 617
Einleitung
Wie es bereits bekannt ist, existiert in den Samsung Stock-ICS 4.0.4 Rom wieder der Superbrick-Bug, der bei Wipe-Operationen in der Recovery den interen Flashspeicher zerschießt und aus dem S2 einen Briefbeschwerer macht.
Bisher war es für den normalen User nicht möglich zu erkennen, ob der Kernel eines neuen ICS-Releases den Bug besitzt, ohne sein Handy danach zum Service-Center schicken zu müssen. Grundsätzlich wird und wurde bei jedem neuen Release angenommen, dass dieser Brick-gefährdet ist.
Tungstwenty bei XDA hat eine Methode gefunden, den Kernel völlig gefahrenlos auf den Brick-Bug zu testen und den betroffenen MMC_CAP_ERASE Befehl zu deaktivieren.
Erkennen des Bugs
Jeder Kernel mit aktivierten MMC_CAP_ERASE löst den Brick-Bug aus. Zur Erkennung des Bugs muss also erkannt werden, ob dies bei dem zu untersuchenden Kernel der Fall ist.
Voraussetzungen:
Linux
oder
Windows mit Cygwin
Tungstwentys Script
Kernel als zImage
Durchführung:
Zur Untersuchung des Kernels das Script ausführen und den Kernel-Namen als Argument einfügen.
Bei Windows und Cygwin empfehle ich, sowohl das Script als auch den Kernel per Drag&Drop in das Cygwin Terminal Fenster zu schieben. Dabei auch darauf achten, dass beim Kernel-Pfad keine Leerzeichen vorhanden sind (dies hatte bei mir Probleme bereitet).
Auf einem Ubuntu 12.04 32-Bit musste ich vor Verwendung des Scriptes erstmal die Berechtigungen neu setzen, da es sonst immer zu einem Abbruch kam. Danach sollte es egal sein, ob man das Script als root oder Standard-User ausführt.
Beispiel Output des Scripts:
XWLPI-Kernel
XWLPO-Kernel:
Mehr Beispiele findet ihr im originalen XDA-Thread
Wie ihr seht, wird bei gefundenen Fehler auch noch angegeben, wo MMC_CAP_ERASE Code sich befindet und wie man ihn ändern muss um den Bug zu verhindern.
Beheben des Bugs
Voraussetzungen:
* Externes Kernel Unpack/Repack Script (Zu finden bei XDA)
* Linux box
* einen Hex-Editor
* Weitere, vom Kernel-Script vorausgesetzte, Dateien
1. Extrahiert mit dem Unpack/Repack Script die zImage-Datei (Kernel)
2. Bearbeitet die Datei piggy
3. Dazu öffnet ihr die Datei in einem Hex-Editor und geht zu dem vom Check-Script genannten Offset
4. Ändert die 01 in 00 und speichert die Datei
5. Packt den Kernel wieder zusammen. Dabei müsst ihr darauf achten, dass die Piggy benutzt wird, die ihr editiert habt, da es durchaus sein kann, dass das Script die Piggy aus Einzelteilen neu zusammensetzt.
6. Checkt den neuen Kernel mit tungstwentys Script. Als Output solltet ihr nun erhalten
7. Flasht diesen Kernel nun auf euer Handy.
Disclaimer:
Es kann keine 100% erfolgreiche Erkennung versprochen werden.
Der gepatchte Kernel sollte flashbar sein, jedoch wurde es nicht mit kompletten Unpack/Repack ausprobiert.
Originaler XDA-Thread:
[BrickBug][Fix][Kernel][01.08]Detection of stock kernel safety + patch guide - xda-developers
Script und Thread erstellt durch Tungstwenty (unteranderem für den CRT-Flicker-Bug-Fix sowie 4.0.4 Kamera-Bug-Fix verantwortlich)
@Mods: Sollte dieser Thread im falschen Bereich gelandet sein, verschiebt ihn bitte. Da der Kernel-Bereich nur für die Vorstellung von Custom-Kernel ist, habe ich mich erstmal dazu entschieden, ihn im Root/Hacking/Modding/Bereich zu posten.
Wie es bereits bekannt ist, existiert in den Samsung Stock-ICS 4.0.4 Rom wieder der Superbrick-Bug, der bei Wipe-Operationen in der Recovery den interen Flashspeicher zerschießt und aus dem S2 einen Briefbeschwerer macht.
Bisher war es für den normalen User nicht möglich zu erkennen, ob der Kernel eines neuen ICS-Releases den Bug besitzt, ohne sein Handy danach zum Service-Center schicken zu müssen. Grundsätzlich wird und wurde bei jedem neuen Release angenommen, dass dieser Brick-gefährdet ist.
Tungstwenty bei XDA hat eine Methode gefunden, den Kernel völlig gefahrenlos auf den Brick-Bug zu testen und den betroffenen MMC_CAP_ERASE Befehl zu deaktivieren.
Erkennen des Bugs
Jeder Kernel mit aktivierten MMC_CAP_ERASE löst den Brick-Bug aus. Zur Erkennung des Bugs muss also erkannt werden, ob dies bei dem zu untersuchenden Kernel der Fall ist.
Voraussetzungen:
Linux
oder
Windows mit Cygwin
Tungstwentys Script
Kernel als zImage
Durchführung:
Zur Untersuchung des Kernels das Script ausführen und den Kernel-Namen als Argument einfügen.
Bei Windows und Cygwin empfehle ich, sowohl das Script als auch den Kernel per Drag&Drop in das Cygwin Terminal Fenster zu schieben. Dabei auch darauf achten, dass beim Kernel-Pfad keine Leerzeichen vorhanden sind (dies hatte bei mir Probleme bereitet).
Auf einem Ubuntu 12.04 32-Bit musste ich vor Verwendung des Scriptes erstmal die Berechtigungen neu setzen, da es sonst immer zu einem Abbruch kam. Danach sollte es egal sein, ob man das Script als root oder Standard-User ausführt.
Beispiel Output des Scripts:
XWLPI-Kernel
###############################################
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /cygdrive/c/Brick/XWLPI-zImage
Kernel: Linux version 3.0.15-I9100XWLPI-CL686447 (dpi@DELL141) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Fri Jun 8 10:36:35 KST 2012
0 ocurrences of the bad code signature
1 ocurrences of the good code signature
The kernel appears to be good (MMC_CAP_ERASE disabled)
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /cygdrive/c/Brick/XWLPI-zImage
Kernel: Linux version 3.0.15-I9100XWLPI-CL686447 (dpi@DELL141) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Fri Jun 8 10:36:35 KST 2012
0 ocurrences of the bad code signature
1 ocurrences of the good code signature
The kernel appears to be good (MMC_CAP_ERASE disabled)
XWLPO-Kernel:
###############################################
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /cygdrive/c/zImage
Kernel: Linux version 3.0.15-I9100XXLQ7-CL753921 (se.infra@SEP-107) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Wed Jul 4 20:32:40 KST 2012
1 ocurrences of the bad code signature
0 ocurrences of the good code signature
***************
!!! WARNING !!!
***************
The kernel appears to have MMC_CAP_ERASE *enabled*, which is dangerous on many devices
Unpacked kernel code stored at: /cygdrive/c/zImage_unpacked
The unsafe instruction can be found at offset 0x00594ef4
==================== Disassembly of the instruction ====================
If you want to check the disassembly make sure CROSS_COMPILE is correctly set and exported
========================================================================
*** Instructions for patching ***
- Choose one of the existing unpack/repack scripts
- Unpack the kernel code, initramfs, etc.
- Do a binary edit of the unpacked code
- At offset 0x00594ef4, replace "01 ?b 8? e3" with "00 ?b 8? e3" - change just the first byte to 00
- Repack the kernel, including the changed code and all original contents
- Re-run this script to confirm that the newly generated file no longer has MMC_CAP_ERASE enabled
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /cygdrive/c/zImage
Kernel: Linux version 3.0.15-I9100XXLQ7-CL753921 (se.infra@SEP-107) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Wed Jul 4 20:32:40 KST 2012
1 ocurrences of the bad code signature
0 ocurrences of the good code signature
***************
!!! WARNING !!!
***************
The kernel appears to have MMC_CAP_ERASE *enabled*, which is dangerous on many devices
Unpacked kernel code stored at: /cygdrive/c/zImage_unpacked
The unsafe instruction can be found at offset 0x00594ef4
==================== Disassembly of the instruction ====================
If you want to check the disassembly make sure CROSS_COMPILE is correctly set and exported
========================================================================
*** Instructions for patching ***
- Choose one of the existing unpack/repack scripts
- Unpack the kernel code, initramfs, etc.
- Do a binary edit of the unpacked code
- At offset 0x00594ef4, replace "01 ?b 8? e3" with "00 ?b 8? e3" - change just the first byte to 00
- Repack the kernel, including the changed code and all original contents
- Re-run this script to confirm that the newly generated file no longer has MMC_CAP_ERASE enabled
Mehr Beispiele findet ihr im originalen XDA-Thread
Wie ihr seht, wird bei gefundenen Fehler auch noch angegeben, wo MMC_CAP_ERASE Code sich befindet und wie man ihn ändern muss um den Bug zu verhindern.
Beheben des Bugs
Voraussetzungen:
* Externes Kernel Unpack/Repack Script (Zu finden bei XDA)
* Linux box
* einen Hex-Editor
* Weitere, vom Kernel-Script vorausgesetzte, Dateien
1. Extrahiert mit dem Unpack/Repack Script die zImage-Datei (Kernel)
2. Bearbeitet die Datei piggy
3. Dazu öffnet ihr die Datei in einem Hex-Editor und geht zu dem vom Check-Script genannten Offset
4. Ändert die 01 in 00 und speichert die Datei
5. Packt den Kernel wieder zusammen. Dabei müsst ihr darauf achten, dass die Piggy benutzt wird, die ihr editiert habt, da es durchaus sein kann, dass das Script die Piggy aus Einzelteilen neu zusammensetzt.
6. Checkt den neuen Kernel mit tungstwentys Script. Als Output solltet ihr nun erhalten
###############################################
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /home/user/Arbeitsfläche/Repack/zImage_packing/zImage
Kernel: Linux version 3.0.15-I9100XWLPT-CL941023 (dpi@DELL169) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Fri Jul 27 18:08:15 KST 2012
0 ocurrences of the bad code signature
1 ocurrences of the good code signature
The kernel has been patched by this method to disable MMC_CAP_ERASE and should now be entirely safe
# #
# GT-I9100 Kernel MMC_CAP_ERASE bug detection #
# By Tungstwenty - forum.xda-developers.com #
# Tungstwenty@gmail.com #
# #
###############################################
Detecting safety of kernel: /home/user/Arbeitsfläche/Repack/zImage_packing/zImage
Kernel: Linux version 3.0.15-I9100XWLPT-CL941023 (dpi@DELL169) (gcc version 4.4.3 (GCC) ) #3 SMP PREEMPT Fri Jul 27 18:08:15 KST 2012
0 ocurrences of the bad code signature
1 ocurrences of the good code signature
The kernel has been patched by this method to disable MMC_CAP_ERASE and should now be entirely safe
Disclaimer:
Es kann keine 100% erfolgreiche Erkennung versprochen werden.
Der gepatchte Kernel sollte flashbar sein, jedoch wurde es nicht mit kompletten Unpack/Repack ausprobiert.
Originaler XDA-Thread:
[BrickBug][Fix][Kernel][01.08]Detection of stock kernel safety + patch guide - xda-developers
Script und Thread erstellt durch Tungstwenty (unteranderem für den CRT-Flicker-Bug-Fix sowie 4.0.4 Kamera-Bug-Fix verantwortlich)
@Mods: Sollte dieser Thread im falschen Bereich gelandet sein, verschiebt ihn bitte. Da der Kernel-Bereich nur für die Vorstellung von Custom-Kernel ist, habe ich mich erstmal dazu entschieden, ihn im Root/Hacking/Modding/Bereich zu posten.
Zuletzt bearbeitet: