Warum DLL in C konvertieren?
Eine DLL (Windows PE-Format) enthält kompilierten Binärcode - ursprüngliche Variablennamen, Kommentare und Strukturen werden vom Compiler verworfen. Entwickler dekompilieren DLLs, wenn der Quellcode verloren gegangen oder nicht verfügbar ist, wenn sie Bibliotheken von Drittanbietern auf Sicherheit prüfen oder Funktionen auf eine andere Plattform portieren.
Wie man DLL in C konvertiert
dotPeek FREE
Für .NET-DLLs: Ziehen Sie die .dll auf dotPeek, durchsuchen Sie den Namespace-Baum, klicken Sie dann mit der rechten Maustaste auf einen Namespace und wählen Sie «Export to Project», um .cs-Quelldateien in einen Ordner zu schreiben.
ILSpy OPEN-SOURCE
Für .NET-DLLs: Öffnen Sie die Datei über «File > Open», wählen Sie die Typen im Assembly-Baum aus und nutzen Sie dann «File > Save Code», um dekompilierte C#-Dateien zu exportieren.
Ghidra OPEN-SOURCE
Für native DLLs: Importieren Sie die Datei, führen Sie die Auto-Analyse aus, durchsuchen Sie die Exporte im «Symbol Tree» und betrachten Sie den C-ähnlichen Pseudocode im «Decompiler»-Fenster; Export über «File > Export Program > C/C++».
Über diese Formate
Eine DLL (Dynamic Link Library) ist eine Windows-Bibliotheksdatei, die kompilierten Code enthält, den Programme während des Betriebs laden; sie ist also nicht etwas, das man per Doppelklick…
.DLL-Details öffnen →Eine .c-Datei ist C-Quellcode - reiner Text, den ein Programmierer schreibt, den ein Compiler in ein ausführbares Programm umwandelt. Öffnen Sie sie zum Lesen in einem beliebigen Texteditor…
.C-Details öffnen →Qualität & worauf zu achten ist
- .NET-DLLs enthalten CIL-Bytecode und lassen sich fast perfekt in C# dekompilieren; native DLLs, die aus C oder C++ kompiliert wurden, erzeugen nur annähernden Pseudocode mit automatisch generierten Namen wie
param_1undlocal_8. - dotPeek und ILSpy erzeugen C# (oder VB.NET), kein reines C; wenn Sie spezifisch C benötigen, müssen Sie die Ausgabe manuell übersetzen.
- Ursprüngliche Variablennamen, Kommentare und Codestrukturen fehlen sowohl in der dekompilierten .NET-Ausgabe als auch in der disassemblierten nativen Ausgabe - der Compiler verwirft diese Informationen.