Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
de4dot — .NET-Deobfusktor und -Unpacker. | Kitploit
Tools/GitHubGitHub/de4dot/de4dot
Statische AnalyseDynamische Code-Analyse (DAST)Reverse EngineeringMalware-AnalyseBinäranalyseArchived
GitHubde4dot/de4dot

de4dot

.NET-Deobfusktor und -Unpacker.

Repository anzeigen
7.4k2.8k36vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Beschreibung

de4dot ist ein quelloffener (GPLv3) .NET-Deobfuskator und Unpacker, geschrieben in C#. Er versucht sein Bestes, eine gepackte und obfuskierte Assembly nahezu in die ursprüngliche Assembly zurückzuverwandeln. Der Großteil der Obfuskation kann vollständig rückgängig gemacht werden (z. B. Zeichenfolgenverschlüsselung), aber die Umbenennung von Symbolen kann nicht rückgängig gemacht werden, da die ursprünglichen Namen (normalerweise) nicht Teil der obfuskierten Assembly sind.

Er verwendet dnlib zum Lesen und Schreiben von Assemblys. Stellen Sie also sicher, dass Sie es besorgen, sonst wird es nicht kompilieren.

Binärdateien

Holen Sie sich die Binärdateien vom Buildserver .

Es ist KOSTENLOS, aber es gibt KEINEN SUPPORT

Es gibt keinen Support. Schreiben Sie mir keine E-Mail, wenn Sie es nicht verwenden können oder wenn es eine Datei nicht deobfuscieren kann, die mit einem aktualisierten Obfuskator obfuskiert wurde.

Versuchen Sie stattdessen, de4dot selbst zu aktualisieren. Es ist viel einfacher, als Sie denken. Wenn Sie das nicht können, suchen Sie im Internet und Sie sollten ein paar Foren finden, in denen Sie Ihre Frage stellen können.

Funktionen

Hier ist eine pseudozufällige Liste der Dinge, die er tun wird, je nachdem, welcher Obfuskator zum Obfuskieren einer Assembly verwendet wurde:

  • Methoden inline einfügen. Einige Obfuskatoren verschieben kleine Teile einer Methode in eine andere statische Methode und rufen sie auf.
  • Zeichenfolgen statisch oder dynamisch entschlüsseln
  • Andere Konstanten entschlüsseln. Einige Obfuskatoren können auch andere Konstanten verschlüsseln, z. B. alle Ganzzahlen, alle Doubles usw.
  • Methoden statisch oder dynamisch entschlüsseln
  • Proxy-Methoden entfernen. Viele Obfuskatoren ersetzen die meisten/alle Call-Anweisungen durch einen Aufruf an einen Delegaten. Dieser Delegat ruft seinerseits die eigentliche Methode auf.
  • Symbole umbenennen. Auch wenn die meisten Symbole nicht wiederhergestellt werden können, benennt er sie in menschenlesbare Zeichenfolgen um. Manchmal können jedoch einige der ursprünglichen Namen wiederhergestellt werden.
  • Virtualisierten Code devirtualisieren
  • Ressourcen entschlüsseln. Viele Obfuskatoren haben eine Option, um .NET-Ressourcen zu verschlüsseln.
  • Eingebettete Dateien entschlüsseln. Viele Obfuskatoren haben eine Option, um andere Assemblys einzubetten und möglicherweise zu verschlüsseln/komprimieren.
  • Manipulationserkennungscode entfernen
  • Anti-Debug-Code entfernen
  • Kontrollfluss-Deobfuskation. Viele Obfuskatoren modifizieren den IL-Code, sodass er wie Spaghetti-Code aussieht, was das Verständnis des Codes sehr erschwert.
  • Klassenfelder wiederherstellen. Einige Obfuskatoren können Felder von einer Klasse in eine andere, vom Obfuskator erstellte Klasse verschieben.
  • Eine PE-EXE in eine .NET-EXE konvertieren. Einige Obfuskatoren verpacken eine .NET-Assembly in einer Win32-PE, sodass ein .NET-Decompiler die Datei nicht lesen kann.
  • Entfernt die meisten/alle vom Obfuskator hinzugefügten Junk-Klassen.
  • Behebt einige peverify-Fehler. Viele der Obfuskatoren sind fehlerhaft und erzeugen versehentlich nicht verifizierbaren Code.
  • Die Typen von Methodenparametern und Feldern wiederherstellen

Unterstützte Obfuskatoren/Packer

  • Agile.NET (aka CliSecure)
  • Babel.NET
  • CodeFort
  • CodeVeil
  • CodeWall
  • CryptoObfuscator
  • DeepSea Obfuscator
  • Dotfuscator
  • .NET Reactor
  • Eazfuscator.NET
  • Goliath.NET
  • ILProtector
  • MaxtoCode
  • MPRESS
  • Rummage
  • Skater.NET
  • SmartAssembly
  • Spices.Net
  • Xenocode

Einige der oben genannten Obfuskatoren werden selten verwendet (z. B. Goliath.NET), daher wurden sie viel weniger getestet. Helfen Sie mir, indem Sie Fehler oder Probleme melden, die Sie finden.

Warnung

Manchmal werden die obfuskierte Assembly und alle ihre Abhängigkeiten zur Ausführung in den Speicher geladen. Verwenden Sie eine sichere Sandbox-Umgebung, wenn Sie den Verdacht haben, dass die Assembly oder die Assemblys Schadsoftware sind.

Selbst wenn die aktuelle Version von de4dot eine bestimmte Assembly nicht zur Ausführung in den Speicher lädt, könnte es eine zukünftige Version tun.

So verwenden Sie de4dot

N00b-Benutzer

Ziehen Sie die Datei(en) auf de4dot.exe und warten Sie ein paar Sekunden.

Mehrere Dateien gleichzeitig deobfuscieren

Wenn mehr als eine Assembly obfuskiert wurde, müssen Sie sehr wahrscheinlich alle gleichzeitig deobfuscieren, es sei denn, Sie deaktivieren die Symbolumbenennung. Der Grund ist, dass, wenn Assembly A einen Verweis auf Klasse C in Assembly B hat und Sie nur in Assembly B Symbole umbenennen, Klasse C z. B. in Class0 umbenannt werden könnte, der Verweis in Assembly A jedoch weiterhin auf eine Klasse namens C in Assembly B verweist. Wenn Sie beide Assemblys gleichzeitig deobfuscieren, werden auch alle Verweise aktualisiert.

Alle obfuskierten Dateien finden und deobfuscieren

Die folgende Befehlszeile deobfusciert alle Assemblys, die von einem unterstützten Obfuskator obfuskiert wurden, und speichert die Assemblys in c:\output

root@kitploit:~
de4dot -r c:\input -ru -ro c:\output

-r bedeutet rekursive Suche. -ru bedeutet, dass unbekannte Dateien ignoriert werden sollen. -ro bedeutet, dass die Ausgabedateien im folgenden Verzeichnis abgelegt werden sollen. Normalerweise würden Sie zuerst c:\input nach c:\output kopieren und dann den Befehl ausführen. Auf diese Weise befinden sich alle Dateien in c:\output, auch Nicht-Assemblys und nicht verarbeitete Assemblys. Wenn de4dot fertig ist, doppelklicken Sie einfach auf die Hauptassembly in c:\output, und sie sollte hoffentlich starten.

Obfuskator erkennen

Verwenden Sie die Option -d, um den Obfuskator zu erkennen, ohne eine Assembly zu deobfuscieren.

Finden Sie alle .NET-Assemblys und erkennen Sie den Obfuskator. Wenn es sich um einen nicht unterstützten Obfuskator handelt oder wenn sie nicht obfuskiert ist, wird „Unknown obfuscator" ausgegeben.

root@kitploit:~
de4dot -d -r c:\input

Dasselbe wie oben, außer dass nur angezeigt wird, welche Dateien von einem unterstützten Obfuskator obfuskiert wurden.

root@kitploit:~
de4dot -d -r c:\input -ru

Obfuskator erkennen

root@kitploit:~
de4dot -d file1.dll file2.dll file3.dll

Metadaten-Tokens beibehalten

In seltenen Fällen möchten Sie vielleicht die Metadaten-Tokens beibehalten. Verwenden Sie --preserve-tokens oder --preserve-table. Ziehen Sie auch die Verwendung von --keep-types in Betracht, da dadurch keine vom Obfuskator hinzugefügten Typen und Methoden entfernt werden. Eine weitere nützliche Option ist --dont-create-params. Wenn sie verwendet wird, erstellt der Renamer keine Param-Zeilen für Methodenparameter, die keine Param-Zeile haben. Auf diese Weise wird die ParamPtr-Tabelle nicht zu Ihren Assemblys hinzugefügt. Peverify hat einen Fehler und unterstützt dies nicht (Sie werden viele "errors" sehen).

Die #Strings-, #US- und #Blob-Heaps können ebenfalls beibehalten werden, indem Sie --preserve-strings, --preserve-us bzw. --preserve-blob verwenden. Von diesen dreien ist --preserve-us am nützlichsten, da die ldstr-Anweisung und module.ResolveString() direkt auf den #US-Heap verweisen.

--preserve-sig-data sollte verwendet werden, wenn der Obfuskator am Ende von Signaturen zusätzliche Daten hinzufügt, die er für eigene Zwecke verwendet, z. B. als Entschlüsselungsschlüssel. Confuser ist ein Obfuskator, der dies tut.

--preserve-tokens bewahrt alle wichtigen Tokens, aktiviert aber auch --preserve-us, --preserve-blob und --preserve-sig-data.

Wenn es als unbekannter (nicht unterstützter) Obfuskator erkannt wird (oder wenn Sie es mit -p un erzwingen), werden alle Tokens beibehalten, einschließlich des #US-Heaps und aller zusätzlichen Daten am Ende von Signaturen. Außerdem werden keine Obfuskator-Typen, -Felder oder -Methoden entfernt.

Alle wichtigen Tokens, #US, #Blob und zusätzliche Signaturdaten beibehalten.

root@kitploit:~
de4dot --preserve-tokens file1.dll

Alle wichtigen Tokens, #US, #Blob und zusätzliche Signaturdaten beibehalten und keine vom Obfuskator hinzugefügten Typen/Felder entfernen

root@kitploit:~
de4dot --keep-types --preserve-tokens file1.dll

Alle wichtigen Tokens, #US, #Blob und zusätzliche Signaturdaten beibehalten und keine zusätzlichen Param-Zeilen erstellen, um zu verhindern, dass die ParamPtr-Tabelle erstellt wird.

root@kitploit:~
de4dot --dont-create-params --preserve-tokens file1.dll

Alle wichtigen Tokens außer den Param-Tokens beibehalten.

root@kitploit:~
de4dot --preserve-table all,-pd file1.dll

Zeichenfolgen dynamisch entschlüsseln

Obwohl de4dot viele Obfuskatoren unterstützt, gibt es immer noch einige, die es nicht unterstützt. Um Zeichenfolgen zu entschlüsseln, müssen Sie zunächst herausfinden, welche Methode oder Methoden Zeichenfolgen entschlüsseln. Um das Methoden-Token dieser Zeichenfolgen-Entschlüsseler zu erhalten, können Sie ILDASM mit aktivierter Option 'show metadata tokens' verwenden. Ein Methoden-Token ist eine 32-Bit-Zahl und beginnt mit 06, z. B. 06012345.

Dieser Befehl lädt die Assembly file1.dll durch Aufruf von Assembly.Load() in den Speicher. Wenn er Aufrufe an die beiden Zeichenfolgen-Entschlüsseler (06012345 und 060ABCDE) erkennt, ruft er sie durch Erstellen einer dynamischen Methode auf und speichert das Ergebnis (die entschlüsselte Zeichenfolge). Der Aufruf an den Zeichenfolgen-Entschlüsseler wird entfernt und die entschlüsselte Zeichenfolge erscheint an seiner Stelle.

root@kitploit:~
de4dot file1.dll --strtyp delegate --strtok 06012345 --strtok 060ABCDE

Da die Assembly geladen und ausgeführt wird, stellen Sie sicher, dass Sie dies in einer Sandbox ausführen, wenn Sie den Verdacht haben, dass die Datei Schadsoftware ist.

Erkennung eines bestimmten Obfuskators erzwingen

de4dot ist nicht perfekt. Wenn es einen Obfuskator nicht erkennt, können Sie die Option -p verwenden, um es zu zwingen, anzunehmen, dass die Assembly damit obfuskiert wurde.

SmartAssembly erzwingen

root@kitploit:~
de4dot file1.dll -p sa

Nicht unterstützten Obfuskator erzwingen

root@kitploit:~
de4dot file1.dll -p un

Für andere Obfuskator-Typen siehe den Hilfebildschirm.

Symbolumbenennung deaktivieren

Das Umbenennen von Symbolen ist nicht so einfach wie das Umbenennen von A in B, wenn Reflektion im Spiel ist. de4dot unterstützt derzeit kein Umbenennen von XAML. Wenn Sie also vermuten, dass es WPF verwendet (oder wenn es eine Silverlight-App ist), sollten Sie die Umbenennung deaktivieren, falls die Assembly nicht ausgeführt werden kann.

root@kitploit:~
de4dot --dont-rename file1.dll file2.dll

--keep-names kann auch verwendet werden, um de4dot mitzuteilen, bestimmte Symbole nicht umzubenennen, z. B. "Felder nicht umbenennen".

Benennen Sie alles um, was umbenannt werden sollte, außer Eigenschaften, Ereignisse und Methoden.

root@kitploit:~
de4dot --keep-names pem file1.dll

Eine andere Umbenennungs-Regex verwenden

Die Standard-Regexes sollten ausreichen, außer möglicherweise der, die verwendet wird, wenn ein nicht unterstützter Obfuskator erkannt wird. Um alle Standard-Regexes zu sehen, starten Sie de4dot ohne Argumente; es listet alle Optionen und alle Standardwerte auf.

Z. B. ist derzeit die folgende Standard-Regex, die verwendet wird, wenn Dotfuscator erkannt wird:

root@kitploit:~
!^[a-z][a-z0-9]{0,2}$&!^A_[0-9]+$&^[\u2E80-\u9FFFa-zA-Z_<{$][\u2E80-\u9FFFa-zA-Z_0-9<>{}$.`-]*$

Wie Sie sehen, ist es nicht nur eine Regex, sondern mehr als eine. Jede wird durch & getrennt, und jede Regex kann durch ein vorangestelltes ! negiert werden. Um es deutlicher zu zeigen, werden diese Regexes verwendet:

root@kitploit:~
(negiert) ^[a-z][a-z0-9]{0,2}$
(negiert) ^A_[0-9]+$
^[\u2E80-\u9FFFa-zA-Z_<{$][\u2E80-\u9FFFa-zA-Z_0-9<>{}$.`-]*$

Zum Ändern der Regex(es) müssen Sie den kurzen Typnamen des Obfuskators kennen (siehe Hilfebildschirm). Z. B. ist es sa bei SmartAssembly und un bei einem nicht unterstützten/unbekannten Obfuskator. Die zu verwendende Option ist --TYPE-name (z. B. --sa-name für SmartAssembly und --un-name für unbekannte/nicht unterstützte Obfuskatoren):

root@kitploit:~
de4dot --un-name "^[a-zA-Z]\w*$" file1.dll

Weitere Optionen

Starten Sie de4dot ohne Argumente, und es zeigt alle Optionen an.

Tool herunterladen