Skip to Content
Neue Version 12 verfügbar 🎉

Assembly-Einbettung

Babel Obfuscator kann mehrere Assemblys in die Hauptanwendung einbetten, was die Gesamtgröße der bereitgestellten Assembly verringern kann. Beim Einbetten mit Babel Obfuscator werden die eingebetteten Assemblys zunächst verschlüsselt und komprimiert und dann als verwaltete Ressourcen in der Hauptassembly der Anwendung gespeichert.

Beachten Sie, dass eingebettete Assemblys nicht verschleiert werden. Es empfiehlt sich daher, nur Assemblys einzubetten, die keinen proprietären Code enthalten, oder Komponenten, die nicht geschützt werden müssen.

Die Einbettung ist der empfohlene Weg zu einer Avalonia-Anwendung als einzelne Datei. Weil eingebettete Assemblys ihre ursprüngliche Identität behalten, werden die Ressourcen-URIs avares://<AssemblyName>/… von Avalonia weiterhin aufgelöst, anders als bei der Zusammenführung, die mit Avalonia nicht kompatibel ist.

Um auch den Code zu schützen, verschleiern Sie zuerst jede Abhängigkeit (und behalten dabei ihre öffentliche API bei, damit assemblyübergreifende Referenzen intakt bleiben) und betten dann die bereits verschleierten Assemblys ein:

babel MyApp.View.dll --output obf/MyApp.View.dll [obfuscation options] babel MyApp.dll --embed obf/MyApp.View.dll [obfuscation options]

Über die Befehlszeile einbetten

Um Assemblys über die Befehlszeile mit dem Tool babel einzubetten, verwenden Sie die Option --embed, gefolgt vom Pfad der einzubettenden Assembly-Datei. Sie können die Option mehrfach angeben, um mehrere Assemblys einzubetten.

babel MyApp.exe --embed Library1.dll --embed Library2.dll

Dieser Befehl bettet Library1.dll und Library2.dll in MyApp.exe ein. Die eingebetteten Assemblys werden als verwaltete Ressourcen in der Hauptassembly gespeichert.

Mit einer XML-Regeldatei können Sie außerdem zusätzliche Einstellungen festlegen, etwa Komprimierung oder Verschlüsselung. Erstellen Sie zum Beispiel eine Datei namens embed.xml mit dem folgenden Inhalt:

<Rules> <Rule name="Library1" feature="embed" exclude="false"> <Target>Assembly</Target> <Pattern>Library1.dll</Pattern> <Properties> <Compress>false</Compress> </Properties> </Rule> <Rule name="Library2" feature="embed" exclude="false"> <Target>Assembly</Target> <Pattern>Library2.dll</Pattern> <Properties> <Encrypt>false</Encrypt> </Properties> </Rule> </Rules>

Führen Sie dann den folgenden Befehl aus, um die Assemblys gemäß der Regeldatei einzubetten:

babel MyApp.exe --embed Library1.dll --embed Library2.dll --rules embed.xml

Mit der MSBuild-Aufgabe Babel einbetten

Um Assemblys mit der MSBuild-Aufgabe Babel einzubetten, fügen Sie Ihrer Projektdatei ein neues Element ItemGroup hinzu. Innerhalb der ItemGroup können Sie mehrere EmbedAssembly-Elemente definieren, von denen jedes den Pfad einer einzubettenden Assembly-Datei angibt. Zum Beispiel:

<ItemGroup> <EmbedAssembly Include="path/to/Assembly1.dll" /> <EmbedAssembly Include="path/to/Assembly2.dll" /> </ItemGroup>

In der Babel-Aufgabe referenzieren Sie EmbedAssembly über das Attribut EmbedAssemblies:

<Babel EmbedAssemblies="@(EmbedAssembly)" RulesFiles="embed.xml" />

Optional können Sie eine Regeldatei angeben, um die Einstellungen für Komprimierung und Verschlüsselung jeder eingebetteten Assembly anzupassen. Standardmäßig werden eingebettete Assemblys mit den Standardeinstellungen von Babel komprimiert und verschlüsselt, bei Bedarf lassen sich diese Einstellungen aber mit einer Regeldatei anpassen.

In Babel Desktop einbetten

Um Assemblys mit Babel Desktop einzubetten, gehen Sie so vor:

Projekt öffnen oder anlegen

Öffnen Sie ein vorhandenes Projekt oder legen Sie ein neues an.

Assemblys hinzufügen

Fügen Sie die primäre Assembly und die einzubettenden Assemblys der Zeichenfläche des Projekts hinzu.

Abhängigkeiten verbinden

Verbinden Sie jede Abhängigkeit mit der primären Assembly: Ziehen Sie vom unteren Anker der Abhängigkeit zum oberen Anker der primären Assembly.

Verbindungstyp auf „Einbetten“ setzen

Klicken Sie auf die Verbindung und setzen Sie ihren Typ auf Einbetten. Neue Verbindungen erhalten standardmäßig den Typ Zusammenführen, wenn die primäre Assembly die Abhängigkeit referenziert, andernfalls den Typ Referenz.

Komprimierung und Verschlüsselung konfigurieren

Konfigurieren Sie die Komprimierung und die Verschlüsselung der eingebetteten Assemblys mit XML-Regeln in der Ansicht „XML-Regeln“ der primären Assembly.

Mehr zur Zeichenfläche des Projekts finden Sie unter Verschleierungsprojekte.

Last updated on