KingJoshii1000
Lieutenant
- Registriert
- Apr. 2010
- Beiträge
- 879
Hallo,
ich habe gestern mir ein kleines Programm in C geschrieben, welches eine Passwortabfragefunktion beinhaltet und sich nur "freischalten" lässt, wenn man das "hardcoded" Passwort eingegeben hat. Nun wollte ich mit Ollydbg den jeweiligen Jump invertieren, was auch problemlos klappte und das Programm akzeptierte jede mögliche Eingabe als richtiges Passwort. Die exe ist im Release Modus kompiliert worden. Dabei ist mir aufgefallen, dass Ollydbg mir für die jeweilige Assemblerzeile meinen originalen Sourcecode angezeigt hat bzw. mir sogar meinen ganzen Sourcecode auf Wunsch anzeigen konnte. Ich habe mich früher mit dem Thema dekompilieren (oberflächlich) auseinander gesetzt und hatte nur im Kopf, dass .NET und Java sich dort ohne großen Aufwand dekompilieren lassen, es jedoch bei C / C++ fast nicht möglich ist. Zum Test habe ich mal CCleaner (war gerade greifbar) geöffnet, dort wurde mir kein Sourcecode angezeigt und der Assemblercode war viel schwerer zu entziffern.
Wie genau kommt das zu Stande, dass sich mein selbstgeschriebenes Programm so leicht dekompilieren und lesen lässt?
Ich dachte, dass wäre auf C / C++ wie gesagt fast nicht möglich. Und wie kann ich das verhindern bzw. erschweren?
Mit freundlichen Grüßen
ich habe gestern mir ein kleines Programm in C geschrieben, welches eine Passwortabfragefunktion beinhaltet und sich nur "freischalten" lässt, wenn man das "hardcoded" Passwort eingegeben hat. Nun wollte ich mit Ollydbg den jeweiligen Jump invertieren, was auch problemlos klappte und das Programm akzeptierte jede mögliche Eingabe als richtiges Passwort. Die exe ist im Release Modus kompiliert worden. Dabei ist mir aufgefallen, dass Ollydbg mir für die jeweilige Assemblerzeile meinen originalen Sourcecode angezeigt hat bzw. mir sogar meinen ganzen Sourcecode auf Wunsch anzeigen konnte. Ich habe mich früher mit dem Thema dekompilieren (oberflächlich) auseinander gesetzt und hatte nur im Kopf, dass .NET und Java sich dort ohne großen Aufwand dekompilieren lassen, es jedoch bei C / C++ fast nicht möglich ist. Zum Test habe ich mal CCleaner (war gerade greifbar) geöffnet, dort wurde mir kein Sourcecode angezeigt und der Assemblercode war viel schwerer zu entziffern.
Wie genau kommt das zu Stande, dass sich mein selbstgeschriebenes Programm so leicht dekompilieren und lesen lässt?
Ich dachte, dass wäre auf C / C++ wie gesagt fast nicht möglich. Und wie kann ich das verhindern bzw. erschweren?
Mit freundlichen Grüßen