.exe Datei ändern oder umschreiben?
Hallo,
Ich habe eine bestimmte .exe Datei, welche einen Schlüssel beinhaltet. Wenn ich diesen Schlüssel auf der Webseite eingebe, auf der ich die Datei heruntergeladen habe, wird der Schlüssel aktiviert. Die Datei sendet dann Daten an ein bestimmtes anderes Programm. Wenn der Schlüssel abgelaufen ist, hört diese auf zu senden. Dabei habe ich mich gefragt, kann ich mir den Sourcecode der Datei ansehen, um die Daten zu sehen, die gesendet werden?
Danke im Voraus!
Ach ja, die Datei, hat ein Fenster, wenn ich sie öffne, wenn der Schlüssel aktiviert wurde kommt ein bestimmtes feature dazu. (das feature "senden" um die Daten an das bestimmte Programm zu senden.)
3 Antworten
Ich hab keine Ahnung, was Du da erklärt hast, aber die Texte (Fachbegriff: Strings) kannst Du natürlich anschauen.
Dafür gibt's mehrere Wege, der "optimale" ist, wenn die exe in einer Programmiersprache entwickelt wurde, die sich leicht decompilen lässt, wie z.B. C#. Dann kannst Du Tools wie z.B. ILSpy (funktioniert nur mit .NET-Sprachen) nutzen und dir den kompletten Programm-Code anzeigen lassen. Der ist zwar nicht exakt so, wie ursprünglich geschrieben, aber meist halbwegs lesbar - zumindest sofern der Entwickler die exe nicht geschützt hat.
Der weniger "optimale" Weg ist, wenn Du z.B. eine C++-Exe hast, denn da kommt dann direkt Assembler (sprich: Maschinencode) raus und den kann man sich ohne Weiteres angucken, nur verstehen, das ist so eine Sache :D
In dem Fall kann man aber auf das Tool Strings von Microsoft zurück greifen, das spuckt dir alle Strings aus, die in der angegebenen exe enthalten sind.
Oder Du greifst auf einen der vielen HEX-Editoren zurück, dann kannst Du dir den Inhalt direkt angucken. Allerdings ist der Aufwand, das zu finden, was Du suchst, noch sehr viel größer, als sowieso schon.
Wenn das, was Du suchst, nicht als Text am Stück drin steht, sondern live generiert wird, dann hast Du Pech. Wenn Du es decompilen kannst, hast Du noch halbwegs eine Chance, wenn nicht, dann nicht.
Das wird gerade bei sicherheitsrelevanten Programmen gemacht, meist in Verbindung mit einem Obfuscator (macht den Quellcode praktisch unmöglich zu verstehen, obwohl man ihn lesen kann) und absichtlich eingestreuten Verwirrungen.
Haupt-Ziel des ganzen: Den Aufwand, den Algorithmus, der das Zeug generiert, so schwer verständlich machen, dass es jeder aufgibt.
Oder der absolute Worst-Case:
Die Exe kennt das, was Du suchst, gar nicht, sondern fragt es bei einem Server an.
Dann kannst Du es eventuell mit dem Tool Process Monitor abfangen. Da hier das Netzwerk im Spiel ist, dürfte das verhältnismäßig einfach sein, denn das Tool hat dafür einen Filter parat.
Ach ja:
Der Aufwand ist für eine Datei groß.
Wenn der Entwickler besonders fies sein wollte, kann er das, was Du suchst, auch auf viele Dateien (DLL-Dateien, oder wie er die nennen möchte) verteilen, dann darfst Du viele Dateien durchsuchen.
Noch eine Idee:
Der Text ist in irgendeiner Form unkenntlich gemacht, z.B. durch Verschlüsselung, irgendwie anders binär hinterlegt, etc.
Dann findest Du natürlich keinen String, denn den gibt's dann nicht.
Die exe führt ja eine Reihe an Dateien aus.
evtl. ist das was du suchst als HEX oder BIN in einer .dll verankert.
... oder es wird live generiert
... oder es wird verschlüsselt, um Leuten wie ihm die Arbeit zu erschweren
... oder es wird vom Server abgefragt
... oder es steht irgendwo sonst, z.B. die Registry
... ... ...
Mir fallen zahllose Wege ein, einen Text zu verstecken und in jedem Fall wäre der Aufwand, ihn zu finden, sehr wahrscheinlich größer als der Nutzen.
Für tatsächlich sicherheitsrelevante Aufgaben würde ich ...
- einen komplexen mathematischen Algorithmus den Code berechnen lassen, das wird z.B. bei Lizenz-Codes, die auch offline geprüft werden können, gemacht.
- alles von einem Server übernehmen lassen und nur noch dort abfragen
Probiere es mal mit dem Tool Resource Hacker: http://www.angusj.com/resourcehacker/