Möglich, zu dekompilieren DLL in C geschrieben?
Möchte ich zu dekompilieren einer DLL, die ich glaube war in C geschrieben. Wie kann ich dies tun?
InformationsquelleAutor Gary Jones | 2011-12-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: können Sie nicht.
Lange Antwort: Die Kompilierung für C/C++ ist sehr verlustreich. Der compiler lässt eine ganze Menge von high-und low-level Optimierungen, code und die daraus resultierenden Assembler-code, der mehr als oft nicht, ähnelt nichts von Ihrer ursprünglichen code. Es gibt außerdem verschiedene Compiler auf dem Markt (und jeder hat verschiedene aktiv-Versionen), die jeweils generieren Sie die Ausgabe ein wenig anders. Ohne zu wissen, welcher compiler verwendet wurde, die Aufgabe, Dekompilierung wird noch aussichtsloser. Am besten, ich habe schon von einigen tools, die Ihnen teilweise Dekompilierung, mit bits von C-code erkannt, hier und da, aber Sie sind immer noch zu Lesen, die durch eine Menge von Assembler-code, um Sinn zu machen.
Das ist übrigens einer der Gründe, warum der Kopierschutz auf software sind schwer zu knacken und erfordern spezielle Montage-Fähigkeiten.
Wenn ich weiß, dass die C-DLL ist der Zugriff auf eine bestimmte
.jar
Dateien, dann ist es sicherlich diese müssten hardcoded in der DLL und kommen würde in eine Dekompilierung?Schwer zu sagen. Es ist möglich, beliebige "Ressourcen" in einem .DLL/.EXE Datei. Wenn es so gespeichert, dann brauchen Sie nicht zu dekompilieren, - es sind Ressourcen-viewer-tools, die Sie extrahieren können für Sie. Dann können Sie zu dekompilieren .jar-Datei, die mit Java. Aber es gibt auch andere homebrew-Möglichkeiten der Einbettung von Dateien in .dll-Dateien und wenn es nutzt eine von diesen, sind Sie aus Glück heraus. Vielleicht kannst du dir diese Dateien, während das Programm ausgeführt wird, und Sie extrahiert werden, die in einem temporären Ordner oder so?
InformationsquelleAutor Vilx-
Es ist möglich, aber extrem schwierig und nimmt riesige Menge an Zeit, auch wenn Sie ziemlich versiert in C, Assembler und mit den Feinheiten des Betriebssystems, wo dieser code funktionieren soll.
Das problem ist, die Optimierung macht kompilierten code kaum erkennbar/verständlich für den Menschen.
Weiter, gibt es Unklarheiten, wenn der disassembler verliert Informationen (z.B. die gleiche Anweisung kodiert werden kann in den unterschiedlichen weisen und wenn der rest des Codes hängt von einer bestimmten Codierung, die viele Zerleger (oder deren Benutzer) nicht berücksichtigt, die daraus resultierende Demontage wird unvollständig oder falsch).
Self-modifying-code erschwert die Dinge.
Finden Sie in diese Frage mehr auf das Thema und Werkzeuge zur Verfügung.
InformationsquelleAutor Alexey Frunze
Können Sie, aber nur bis zu einem gewissen Grad:
InformationsquelleAutor LeleDumbo