Skip to Content
Neue Version 12 verfügbar 🎉
Obfuscator

Erste Schritte

Das Plugin „Babel Encrypt“ ist in der Ultimate-Edition von Babel Obfuscator enthalten. Für die Enterprise-Edition muss es separat erworben werden. Das Plugin wird als Assembly-Datei „BabelEncrypt.dll“ geliefert und arbeitet nahtlos mit dem Befehlszeilentool von Babel zusammen. Um es zu verwenden, geben Sie den Pfad der Plugin-Datei wie folgt auf der Befehlszeile an:

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom

Dabei ist myapp.exe die Ziel-Assembly, die Sie verschleiern möchten. Das Argument [custom] der Zeichenfolgenverschlüsselung ist nötig, damit Babel den Algorithmus des Plugins statt der integrierten Algorithmen für die Zeichenfolgenverschlüsselung verwendet.

Argumente des Plugins

Das Babel Encrypt Plugin nimmt die folgenden optionalen Argumente an:

password <string>

Legt ein Passwort fest, mit dem die Zeichenfolgendaten verschlüsselt werden. Verschlüsselt wird mit dem Algorithmus Triple DES. Ohne Angabe wird ein zufälliges Passwort erzeugt.

iterations <number>

Die Anzahl der Verschlüsselungsdurchläufe (Standard: 1).

minStringLength <number>

Ist eine Zeichenfolge kürzer als der angegebene Wert, wird sie nicht verschlüsselt. Mit dem Wert 0 werden alle Zeichenfolgen unabhängig von ihrer Länge verschlüsselt. Das ist das Standardverhalten. Mit einem Wert größer als 0 schließen Sie kurze Zeichenfolgen von der Verschlüsselung aus, was je nach Anwendungsfall die Leistung verbessern oder andere Vorteile haben kann. Beachten Sie, dass der Wert für die Mindestlänge direkt beeinflusst, wie stark Ihre Assembly verschleiert wird.

minHashStringLength <number>

Legt die Mindestlänge der Zeichenfolgen fest, die mit dem Algorithmus HASH verschlüsselt werden (Standard: 15).

useLocalVars <true|false>

Gibt an, ob lokale Variablen für den Aufruf der Entschlüsselungsmethode angelegt werden (Standard: false). Standardmäßig hat die Option den Wert „false“: Die Entschlüsselungsmethode wird dann ohne lokale Variablen der Methode aufgerufen. Mit dem Wert „true“ wird sie über lokale Variablen der Methode aufgerufen. Das kann den Code weiter verwürfeln und die verschleierte Assembly zusätzlich schützen. Lokale Variablen bei der Entschlüsselung machen den Code schwerer verständlich und erschweren das Reverse Engineering, weil der Ausführungspfad komplexer und weniger vorhersehbar wird. Sie können aber auch die Leistung der verschleierten Assembly beeinträchtigen, weil lokale Variablen den Speicherbedarf und die Rechenzeit für die Ausführung des Codes erhöhen können.

extraControlFlow <true|false>

Diese Option soll die Sicherheit erhöhen und verhindern, dass die verschlüsselten Zeichenfolgen leicht durch Reverse Engineering oder Dekompilieren zurückgewonnen werden. Ist sie eingeschaltet, wird auf die Methode mit den verschlüsselten Zeichenfolgen zusätzliche Kontrollflussverschleierung angewendet, sodass der Code stärker verwürfelt und schwerer zu verstehen ist. Die Standardeinstellung ist in der Regel „false“, kann aber je nach gewünschtem Grad von Verschleierung und Schutz geändert werden.

checkDeobfuscators <true|false>

Die Option zur Prüfung auf einen Deobfuskator ist eine Sicherheitsfunktion von Babel Obfuscator, die das Reverse Engineering des verschleierten Codes verhindern hilft.

Gibt an, ob geprüft wird, ob ein Deobfuskator vorhanden ist. Wird ein Deobfuskator erkannt, werden die Zeichenfolgen nicht entschlüsselt, und das Programm schlägt ohne Meldung fehl (Standard: false).

useCodeEncryption <true|false>

Gibt an, ob die Codeverschlüsselung von Babel Obfuscator verwendet wird, um den Code der Methoden zur Entschlüsselung der Zeichenfolgen zu verschlüsseln. Diese Option wirkt nur, wenn die Codeverschlüsselung eingeschaltet ist. (Standard: false).

dictionary <path|expression>

Die angegebene Textdatei enthält eine Liste von Zeichenfolgen oder regulären Ausdrücken, die festlegen, welche Zeichenfolgen das Verschleierungstool nicht verschlüsselt. Jede Zeile der Datei steht für eine exakte Zeichenfolge oder für ein Muster aus einem regulären Ausdruck. Das Verschleierungstool schließt die aufgeführten Zeichenfolgen anhand dieser Angaben von der Verschlüsselung aus. Mit regulären Ausdrücken lassen sich Zeichenfolgen flexibler und umfassender ausschließen. Exakte Zeichenfolgen stellen dagegen sicher, dass bestimmte Zeichenfolgen unabhängig von einem allgemeineren Muster nicht verschlüsselt werden.

Beispiele

Die folgenden Beispiele zeigen, wie Sie das Plugin über die Befehlszeile von Babel Obfuscator verwenden.

Mittlerer Schutz

Schaltet zusätzlich zur Standardkonfiguration des Plugins die Erkennung von Deobfuskatoren ein.

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument checkDeobfuscators=true

Vollständiger Schutz

Dieses Beispiel schaltet alle Funktionen des Plugins ein, mit zusätzlicher Kontrollflussverschleierung für den Aufrufer der Entschlüsselung und mit lokalen Variablen für den Aufruf der Entschlüsselungsmethode.

babel myapp.exe --plugin BabelEncrypt.dll --msilencryption --stringencryption custom --argument iterations=2 --argument extraControlFlow=true --argument useLocalVars=true --argument useCodeEncryption=true

Ein externes Wörterbuch verwenden

Mit einer Textdatei legen Sie ein Wörterbuch der auszuschließenden Zeichenfolgen fest. Jede Zeile kann die exakte auszuschließende Zeichenfolge oder ein regulärer Ausdruck sein.

babel myapp.exe --plugin BabelEncrypt.dll --stringencryption custom --argument dictionary=exclusionlist.txt

Inhalt der Textdatei exclusionlist.txt:

.*@acme.com No secret here to encrypt

Babel Encrypt in DevOps einrichten

Wenn Sie das NuGet-Paket Babel.Obfuscator in Ihrer DevOps-Umgebung oder in einem anderen Buildsystem verwenden, das NuGet-Pakete unterstützt, können Sie das Plugin Babel Encrypt nahtlos in Ihren Buildprozess einbinden.

Fügen Sie dazu die folgenden MSBuild-Anweisungen in Ihre Projektdatei ein:

<ItemGroup> <BabelPlugin Include="$(BabelTaskDir)BabelEncrypt.dll" /> </ItemGroup> <PropertyGroup> <PluginsArguments>iterations=3</PluginsArguments> </PropertyGroup>

Mit diesen Anweisungen wird das Plugin Babel Encrypt aufgerufen, sobald Sie in Ihrer DevOps-Umgebung oder Ihrem Buildsystem einen Build auslösen. Es ergänzt die Codeverschleierung von Babel Obfuscator um zusätzliche Verschlüsselung.

Babel Encrypt in Babel Desktop konfigurieren

Statt über die Befehlszeile können Sie das Plugin für ein Ziel auch in der Oberfläche von Babel Desktop einrichten:

  1. Wählen Sie die Assembly auf der Zeichenfläche aus und öffnen Sie ihre Einstellungen.
  2. Fügen Sie unter Dateien und Abhängigkeiten den Pfad von BabelEncrypt.dll zu Plugins hinzu.
  3. Führen Sie in der Befehlspalette Engine-Plugins: Argumentnamen ermitteln aus. Babel liest die Argumente, die das Plugin deklariert, und trägt ihre Schlüssel in PluginsArguments ein. Dort geben Sie die Werte ein.
  4. Setzen Sie String Encryption auf custom, damit die Engine den Algorithmus des Plugins statt der integrierten Algorithmen verwendet.
  5. Um useCodeEncryption zu verwenden, schalten Sie außerdem MSIL Encryption ein.

Das Plugin läuft im lokalen Engine-Prozess mit den Berechtigungen Ihres Kontos. Fügen Sie deshalb nur eine Plugin-DLL hinzu, der Sie vertrauen. Jede Einstellung gilt für die ausgewählte Assembly. Wiederholen Sie die Schritte für jedes Ziel, das das Plugin braucht.

Last updated on