Ich glaube mal es gehört hier rein. Mein Problem ist selbstgestellt und von
http://www.hackthissite.org -> Application Challenges -> appwin7
Wer dort kein Konto hat, wird das ganze wohl nicht zu Gesicht kriegen, deswegen erläutere ich es mal:
Aufgabe ist es, das Passwort für die Webseite aus dem Programm auszulesen. Es ist ein cmd-Programm das nach einem Passwort fragt (welches Äquivalent zu dem auf der Seite ist) und bei falsche Eingabe mit "Invalid Password" abbricht.
Das ganze hab ich also in Ollydbg geladen, um das Passwort manuell aus dem Arbeitsspeicher auszulesen, wie bei den Übungen zuvor. Das Problem ist jetzt allerdings, dass das Passwort verschlüsselt wird, und da ich nicht so der Uber-Assembler bin kann ich mit dem verschlüsselungscode nicht viel anfangen.
Also hab ich mir das Entscheidende CMP rausgesucht, bei dem das eingegebene Passwort mit dem verschlüsselten verglichen wird (Ich vermute, dass das Eingegebene Passwort verschlüsselt wird und dann mit dem original verglichen wird). Wenn der Compare wahr war, wir das richtige Passwort ausgegeben, wenn nicht, dann eben nicht.
Nun zu meinem eigentlichen Problem: Inwiefern muss ich den Wert des Compares/Dem Sprungbefehl danach ändern, sodass die Bedingung umgedreht wird? Also wenn ich das falsche Passwort eingebe das richtige ausgegeben wird und umgekehrt?
Wie gesagt, ich hab nicht wirklich viel Ahnung von Assembler, ich weiß was die Befehle in der Theorie tun, aber was wirklich passiert kann ich nicht erklären.
Ich weiß nichtmal ob mein Lösungsansatz überhaupt funktioniert, aber ich wills wenigstens mal probiert haben.
Ich wär über jede Hilfe zum eigentlichen Problem dankbar, weitere Lösungswege sollten bitte nicht zu sehr spoilern, ich will immerhin noch was lernen dabei =P
_________________
"Software is like sex. It's better when it's free."