Skip to Content
Neue Version 12 verfügbar 🎉
ObfuscatorDynamic ProxyInterne und externe Aufrufe

Interne und externe Aufrufe

Dynamic Proxy lässt sich auf zwei Kategorien von Aufrufen anwenden, die der Proxy-Modus auswählt:

ModusLeitet über Proxys …
externalAufrufe von Methoden und Konstruktoren, die außerhalb der verschleierten Assembly definiert sind: in der .NET-Basisklassenbibliothek und in referenzierten Assemblys
internalAufrufe von Methoden und Konstruktoren, die innerhalb der verschleierten Assembly definiert sind
allinterne und externe Aufrufe

Wie Sie einen Modus über die Befehlszeile, MSBuild oder Babel Desktop wählen, erfahren Sie unter Konfiguration.

Interne Proxy-Aufrufe

Dynamic Proxy für interne Methodenaufrufe einzusetzen, bringt mehrere Vorteile für die Verschleierung und den Schutz des Codes. Die wichtigsten Vorteile:

  1. Implementierungsdetails verbergen: Wenn für interne Typen dynamische Proxys erzeugt werden, bleiben die tatsächlichen Implementierungsdetails dieser Typen vor externem Code und möglichen Angreifern verborgen. Die dynamischen Proxys dienen als Vermittler und schirmen die interne Logik und Struktur der Typen ab. Angreifern fällt es dadurch schwerer, Ihren Code zu verstehen und zu manipulieren.
  2. Methodenaufrufe abschirmen: Bei dynamischen Proxys für interne Typen haben Decompiler Schwierigkeiten, den Aufruffluss einer Methode zu rekonstruieren. Decompiler analysieren kompilierten Code, um eine Darstellung des ursprünglichen Quellcodes auf hoher Ebene zu erzeugen. Dynamische Proxys fügen jedoch eine zusätzliche Indirektionsebene ein, die es Decompilern erschwert, die Abfolge der Methodenaufrufe genau nachzuvollziehen.
  3. Stärkere Verschleierung: Dynamische Proxys für interne Typen geben Ihrer Codebasis eine zusätzliche Verschleierungsebene. Die Proxys bringen Komplexität und Indirektion mit sich, sodass sich die zugrunde liegende Struktur und die Beziehungen in Ihrem Code beim Reverse Engineering schwerer erkennen lassen. Das kann von Versuchen des Reverse Engineering abschrecken und Ihr geistiges Eigentum schützen.

Mit Dynamic Proxy für interne Aufrufe errichten Sie eine Barriere, die Decompiler daran hindert, den Aufruffluss in Ihrem Code genau zu rekonstruieren. Das ergibt eine zusätzliche Schutzebene und erschwert es Angreifern und allen, die Reverse Engineering betreiben, die zugrunde liegende Logik und das Verhalten Ihrer Anwendung zu verstehen.

Externe Proxy-Aufrufe

Externe Proxy-Aufrufe in Babel Obfuscator sind ein wirksamer Abwehrmechanismus gegen Decompiler, die versuchen, die Namen lokaler Variablen aus ihren abgeleiteten Typen zu rekonstruieren. Decompiler stützen sich häufig auf die verfügbaren Metadaten, etwa die Variablentypen, um die ursprünglichen Namen der Variablen zu rekonstruieren.

Im folgenden dekompilierten Code hat das Tool zum Beispiel die Variablennamen list1 und count aus dem Aufruf des Instanzkonstruktors des Typs List<string> beziehungsweise der Methode get_Count() abgeleitet.

var list1 = new List<string>(); int count = list1.Count;

Wenn externe Proxy-Aufrufe eingeschaltet sind, ersetzt Babel Obfuscator direkte Methodenaufrufe in externen Code durch Aufrufe dynamisch erzeugter Proxy-Klassen. Diese Proxy-Klassen dienen als Vermittler, die die Methodenaufrufe abfangen und umleiten. Dadurch werden die ursprünglichen Methodenaufrufe und die zugehörigen Namen lokaler Variablen verborgen und verschleiert.

Mit eingeschaltetem Dynamic Proxy wird der obige Code zu Folgendem:

var local1 = new a(); int local2 = local1.b();

Decompiler, die sich zur Rekonstruktion der Variablennamen allein auf Metadaten stützen, stoßen bei externen Proxy-Aufrufen auf Schwierigkeiten. Da die ursprünglichen Methodenaufrufe durch Proxy-Aufrufe ersetzt sind, liefern die abgeleiteten Variablentypen allein keine aussagekräftigen Informationen über die ursprünglichen Variablennamen. Der Decompiler kann die ursprünglichen Namen somit nicht mehr allein durch Typableitung rekonstruieren.

Last updated on