PatchMe

Hallo crackme-fans!

Dies ist eigentlich kein "crackme", sondern ein "patchme".
Schwierigkeitsgrad: einfach, also für Einsteiger geeignet.

Die Aufgabe:
Die Win32 exe muss den Text "Hello World" ausgeben. Das tut sie aber erst, nachdem sie gepatcht wurde. Es muss nur ein einziges Bit geändert werden, um die gewünschte Ausgabe zu erhalten.

Folgende Fragen müssen beantwortet werden:

Welches Bit im exe-File muss gekippt werden?
Gesucht sind der Byte-Offset in der exe-Datei, sowie der alte und neue Wert des zu patchenden Bytes, wobei sich beide nur in einem Bit unterscheiden dürfen.

Es gibt (mindestens) zwei Lösungen, eine davon genügt aber.


Happy patching!

-josh


Kommentare, Kritik, Fragen etc. natürlich hochwillkommen.
Bei Interesse sollen weitere Level folgen, Schwierigkeit steigend.
 
Zuletzt bearbeitet:
Hey,

ist echt sehr simpel^^.

Meine Lösung:
@EXE - 0x046F -> 0x75 org => 0x74 patched.
0040106F /75 0E JNZ SHORT Level0.0040107F
=> JNZ zum JZ umgeformt.
 
Blitzschnell gelöst

Hi Chief,

das war zu leicht für dich!!:thumb_up:

Danke für die Blitzlösung! (Die 2. Lösung ist fast genauso leicht)!


-josh
 
War das nicht meine Zeit oder hab ich da an sich etwas verpasst?
Von diesen PatchMes und CrackMes höre ich an sich zum ersten Mal, drum frage ich mich, wie man sowas überhaupt löst.

Disassemblieren und dann den schauen wo der Quellcode hakt?
Gemacht habe ich sowas noch nie, aber vielleicht kann mir da ja jemand die ein oder andere Vorgehensweise präsentieren.
 
Noch eine zweite Möglichkeit:
Orginal:
00401068 817D FC 60020000 CMP DWORD PTR SS:[EBP-4], 260

Patched:
00401068 817D FC 60030000 CMP DWORD PTR SS:[EBP-4], 360

Patchposition: 0x046C
 
Zuletzt bearbeitet:
Leider falsch. Auf welchen Wert soll das Byte beim File-Offset geändert werden? In meinem Original ist an der von dir genannten Position eine 0x81. Vielleicht willst du ja die Lösung nochmal (nur ganz leicht, zugegeben!) korrigieren? So wird es wohl nicht funzen.


Trotzdem herzlichen Dank :thumb_up::thumb_up:! Die Lösung hast du natürlich erkannt! Für dich keine Herausforderung!!


-josh
 
Wops sorry xD
0x046C meinte ich^^. Hatte nach dem Bytestring gesucht und den anfang angegeben und nicht halt den wert ders sein sollte.
 
Zurück
Oben