Skip to Content
Neue Version 12 verfügbar 🎉
ObfuscatorMSBuild-AufgabeReferenz der Babel-Aufgabe

Referenz der Babel-Aufgabe

Alle Attribute der MSBuild-Aufgabe Babel, nach Funktion gruppiert, mit der Befehlszeilenoption, der jedes Attribut entspricht.

Die Babel-Aufgabe stellt für jede Option des Befehlszeilentools ein Attribut bereit und reicht die Attributwerte unverändert an das Tool weiter. Ein boolesches Attribut akzeptiert true oder false. Wo die Befehlszeilenoption ein Argument erwartet, kann dasselbe Argument als Attributwert übergeben werden. Ein mit Boolescher Wert / Zeichenfolge gekennzeichnetes Attribut akzeptiert daher beide Formen. Listenattribute nehmen mehrere durch ; getrennte Werte auf. Nicht gesetzte Attribute behalten die in den Tabellen aufgeführten Standardwerte.

Wenn Sie das NuGet-Paket von Babel Obfuscator verwenden, wird jedes Attribut über eine MSBuild-Eigenschaft oder ein MSBuild-Element gesetzt. Siehe die Tabelle Eigenschaftszuordnung in der Referenz des Pakets.

Version 12.0 fügt die Attribute SingleFile, TrustedSigner, TrustedBundle und TrustedTeam hinzu, die die Paketintegritätsprüfungen der Manipulationserkennung für mobile Apps steuern, sowie den Wert stream von StringEncryption. Sie sind in den folgenden Tabellen mit 12.0 gekennzeichnet.

Verschiedenes

AttributTypStandardwertBefehlszeileBeschreibung
BabelDirectoryZeichenfolgeÄltere Angabe des Ordners, der babel.exe enthält. Die Aufgabe schlägt fehl, wenn die ausführbare Datei dort nicht gefunden wird. Bevorzugen Sie ToolPath.
DbgHelpDllDirZeichenfolge--dbghelpdlldirPfad des Ordners, der dbghelp.dll enthält.
DetectIfObfuscatedBoolescher Wert / Zeichenfolgefalse--isobfuscatedGibt an, ob erkannt werden soll, dass die Ziel-Assembly bereits verschleiert ist. Der Wert warn gibt eine Warnung aus und setzt die Verarbeitung fort, exit bricht ab, ohne die Assembly zu verarbeiten.
EnableObfuscationAgentBoolescher Werttrue--agentGibt an, ob der Verschleierungs-Agent ausgeführt wird. Er analysiert die Assembly und schließt die Symbole von der Verschleierung aus, deren Verschleierung die Assembly unbrauchbar machen würde.
LicenseZeichenfolge--licenseVollständiger Pfad der Lizenzdatei oder eine Liste von Verzeichnissen, in denen nach Lizenzdateien gesucht wird.
NoConfigurationBoolescher Wertfalse--noconfigGibt an, ob die in der Babel-Konfigurationsdatei gespeicherten Standardwerte ignoriert werden.
NoWarningsZeichenfolge--nowarnListe der Warncodes, die ignoriert werden.
ProvideCommandLineArgsBoolescher WertfalseGibt an, ob die an Babel übergebene Befehlszeile protokolliert und im Ausgabeelement CommandLineArgs zurückgegeben wird.
QuickRulesZeichenfolge--quickruleDefinitionen von Schnellregeln.
RandomSeedZeichenfolge--randomseedStartwert des Zufallszahlengenerators, der bei der Verschleierung verwendet wird.
RemoveKeyBoolescher Wertfalse--removekeyGibt an, ob der starke Name aus der verschleierten Assembly entfernt wird.
SatelliteAssembliesZeichenfolge--satelliteListe der Satelliten-Assembly-Dateien, die verarbeitet werden.
SearchDirectoriesZeichenfolge--addsearchListe der Verzeichnisse, in denen die referenzierten Assemblys gesucht werden. References wird als Alias akzeptiert.
SearchSatelliteAssembliesBoolescher Werttrue--satelliteGibt an, ob die Satelliten-Assemblys des Ziels gesucht und verarbeitet werden.
ShowLogoBoolescher Werttrue--logoGibt an, ob die Babel-Version und die Copyright-Informationen ausgegeben werden.
ShowStatisticsBoolescher Werttrue--statisticsGibt an, ob die Verschleierungsstatistiken am Ende des Vorgangs angezeigt werden. Nur Boolean: Um die Statistiken in einer Datei zu speichern, verwenden Sie StatisticsFile.
StatisticsFileZeichenfolge--statisticsPfad der Datei, in der die Verschleierungsstatistiken gespeichert werden. Wird ignoriert, wenn ShowStatistics den Wert false hat.
TargetAssemblyNameZeichenfolgenochange--assemblynameHerkunft des Namens der Ziel-Assembly: nochange, inputfilename, outputfilename oder name=<assembly name>.
ToolExeZeichenfolgeName der ausführbaren Babel-Datei, babel.exe oder babel.dll.
ToolPathZeichenfolgeVerzeichnis der ausführbaren Babel-Datei.
TraceZeichenfolge--traceListe regulärer Ausdrücke, die die zu verfolgenden Symbole auswählen. Die Ablaufverfolgung zeigt, warum ein Symbol verschleiert wird oder nicht, und hilft beim Debuggen der Verschleierungsregeln.
UseSchlüssel=Wert--useVerwendungsoptionen als Schlüssel-Wert-Paare.
VerboseLevelGanzzahl1--verboseAusführlichkeit der Konsolenausgabe. 0 schaltet die Meldungen aus, Werte über 10 zeigen Debuginformationen.
WarningsAsErrorsZeichenfolge--warnaserrorListe der Warncodes, die als Fehler gemeldet werden. Ein Fehler hält die Verschleierung an.
WarningsAsInfosZeichenfolge--warnasinfoListe der Warncodes, die als Informationsmeldungen gemeldet werden.
XmlRulesZeichenfolgeEingebettete XML-Regelelemente, siehe XML-Regeln.

Eingabedateien

AttributTypStandardwertBefehlszeileBeschreibung
InputFileZeichenfolgePfad der Assembly, die verschleiert wird.
KeyContainerZeichenfolge--keynameName des Schlüsselcontainers für den starken Namen (nur Windows).
KeyFileZeichenfolge--keyfilePfad der Schlüsseldatei für den starken Namen, mit der die verschleierte Assembly signiert wird.
KeyPwdZeichenfolge--keypwdPasswort der Schlüsseldatei für den starken Namen oder des Zertifikats.
MapInFilesZeichenfolge--mapinListe der XML-Map-Dateien bereits verschleierter Assemblys, mit denen die Referenzen auf deren Symbole umbenannt werden.
ProjectZeichenfolge--projectPfad der Projektdatei eines Babel-Verschleierungsprojekts.
RulesFilesZeichenfolge--rulesListe der XML-Regeldateien, die verarbeitet werden.

Ausgabedateien

AttributTypStandardwertBefehlszeileBeschreibung
GenerateLogFileBoolescher Wertfalse--logfileGibt an, ob ein Verschleierungsprotokoll erzeugt wird. Der Standardname der Protokolldatei ist <target assembly>.log.
GenerateMapOutFileBoolescher Wertfalse--mapoutGibt an, ob eine Map-Datei der Verschleierung erzeugt wird. Der Standardname der Map-Datei ist <target assembly>.xml.map.
LogFileZeichenfolge--logfilePfad der Protokolldatei der Verschleierung.
MakeProjectZeichenfolge--makeprojectPfad der MSBuild-Projektdatei, die aus den Einstellungen der Aufgabe erstellt wird.
MapOutFileZeichenfolge--mapoutPfad der Map-Datei der Verschleierung.
OutputFileZeichenfolge--outputPfad der verschleierten Assembly.
PdbFileZeichenfolge--pdbPfad der Debugsymboldatei.
PdbPwdZeichenfolge--pdbpwdPasswort der Debugsymboldatei.

Plugins

AttributTypStandardwertBefehlszeileBeschreibung
PluginsZeichenfolge--pluginListe der Plugin-Assembly-Dateien.
PluginsArgumentsSchlüssel=Wert--argumentPlugin-Argumente als Schlüssel-Wert-Paare.

Zusammenführen und Einbetten

AttributTypStandardwertBefehlszeileBeschreibung
CopyAttributesBoolescher Wert / Zeichenfolgefalse--copyattrsGibt an, ob die Attribute auf Assemblyebene der zusammengeführten Assemblys in die Ziel-Assembly kopiert werden. Ein regulärer Ausdruck wählt die doppelten Attribute aus, die zusammengeführt werden können.
DependenciesManifestBoolescher Werttrue--jsonmanifestGibt an, ob das Abhängigkeitsmanifest .deps.json der Ziel-Assembly aktualisiert wird, wenn Assemblys zusammengeführt oder eingebettet werden.
EmbedAssembliesZeichenfolge--embedListe der Assembly-Dateien, die in die Ziel-Assembly eingebettet werden.
InternalizeBoolescher Wertfalse--internalizeGibt an, ob die Sichtbarkeit der zusammengeführten Typen auf die Ziel-Assembly beschränkt wird.
MergeAssembliesZeichenfolgeListe der Assembly-Dateien, die mit der Ziel-Assembly zusammengeführt werden.

Umbenennung

AttributTypStandardwertBefehlszeileBeschreibung
FlattenNamespacesBoolescher Wert / Zeichenfolgetrue--flatnsGibt an, ob die umbenannten Typen in den globalen Namespace verschoben werden. Eine Zeichenfolge legt stattdessen einen gemeinsamen Namespacenamen für die umbenannten Typen fest.
NameLengthGanzzahl / Schlüssel=Wert--namelengthMindestlänge der verschleierten Namen. Schlüssel-Wert-Paare weisen die Länge einer bestimmten Symbolart zu.
NamePrefixZeichenfolge / Schlüssel=Wert--nameprefixPräfix der verschleierten Namen, $name oder eine beliebige Zeichenfolge. Schlüssel-Wert-Paare weisen das Präfix einer bestimmten Symbolart zu.
ObfuscateEventsBoolescher Werttrue--eventsGibt an, ob Ereignisse umbenannt werden.
ObfuscateFieldsBoolescher Werttrue--fieldsGibt an, ob Felder umbenannt werden.
ObfuscateMethodsBoolescher Werttrue--methodsGibt an, ob Methoden umbenannt werden.
ObfuscateParametersBoolescher Werttrue--parametersGibt an, ob Methodenparameter umbenannt werden.
ObfuscatePropertiesBoolescher Werttrue--propertiesGibt an, ob Eigenschaften umbenannt werden.
ObfuscateTypesBoolescher Werttrue--typesGibt an, ob Typen umbenannt werden.
ObfuscateXamlBoolescher Wert / Schlüssel=Wertfalse--xamlGibt an, ob die Symbole umbenannt werden, die von XAML- und BAML-Ressourcen referenziert werden. Schlüssel-Wert-Paare konfigurieren die Umbenennung.
OverloadedRenamingBoolescher Wert / Schlüssel=Wertfalse--overloadedGibt an, ob derselbe Name für Member mit unterschiedlichen Signaturen wiederverwendet wird. Schlüssel-Wert-Paare wählen aus, welche Member überladen werden.
UnicodeNormalizationBoolescher Wert / Zeichenfolgefalse--unicodeGibt an, ob Namen mit Unicode-Zeichen erzeugt werden. Ist die Option ausgeschaltet, werden ASCII-Zeichen verwendet. Eine durch Kommas getrennte Liste von Zeichen oder Bereichen schränkt den Zeichensatz ein.
VirtualFunctionsBoolescher Wert / Schlüssel=Werttrue--virtualGibt an, ob virtuelle Member umbenannt werden. Schlüssel-Wert-Paare konfigurieren die Umbenennung externer Überschreibungen.
XmlDocFilesZeichenfolge--xmldocListe der XML-Dokumentationsdateien, die zusammen mit der Assembly verarbeitet werden. XmlDoc wird als älterer Alias akzeptiert.

Kontrollflussverschleierung

AttributTypStandardwertBefehlszeileBeschreibung
ControlFlowObfuscationBoolescher Wert / Schlüssel=Wertfalse--controlflowGibt an, ob der Kontrollfluss der Methoden verschleiert wird. Schlüssel-Wert-Paare wählen die Algorithmen aus, darunter chain=on für Chained State Ultimate.
ControlFlowIterationsGanzzahl3--iterationsAnzahl der Iterationen der Algorithmen der Kontrollflussverschleierung. 0 schaltet die Kontrollflussverschleierung aus. ILIterations und Iterations werden als Aliase akzeptiert.
EmitInvalidOpcodesBoolescher Wert / Zeichenfolgefalse--invalidopcodesGibt an, ob ungültige MSIL-Opcodes ausgegeben werden, wodurch die Assembly nicht mehr verifizierbar ist. Der Wert enhanced fügt zusätzliche ungültige Opcodes ein.

Verschlüsselung und Schutz

AttributTypStandardwertBefehlszeileBeschreibung
DebuggingProtectionBoolescher Wertfalse--antidebuggingGibt an, ob der Debugging-Schutz eingeschaltet wird.
DynamicProxyBoolescher Wert / Zeichenfolgefalse--proxyGibt an, ob Methodenaufrufe in dynamisch erzeugte Proxys verpackt werden. Der Wert wählt die Aufrufe aus, die über Proxys geleitet werden: internal, external oder all.
DynamicProxyCallFiltersZeichenfolge--proxyListe regulärer Ausdrücke, die die Methodenaufrufe auswählen, die über Proxys geleitet werden.
MsilEncryptionBoolescher Wert / Zeichenfolgefalse--msilencryptionGibt an, ob der MSIL-Code der Methoden verschlüsselt wird. Reguläre Ausdrücke wählen die zu verschlüsselnden Methoden anhand ihrer Signatur aus.
ResourceEncryptionBoolescher Wert / Schlüssel=Wertfalse--resourceencryptionGibt an, ob die verwalteten Ressourcen verschlüsselt werden. Schlüssel-Wert-Paare schalten Verschlüsselung und Komprimierung getrennt ein.
SingleFile 12.0Boolescher Wertfalse--singlefileZeigt an, dass das Ziel als Einzeldateianwendung, als getrimmte Anwendung oder als NativeAOT-Anwendung veröffentlicht wird. Auf Desktop-Zielen ist die Prüfung der Manipulationserkennung bei einer solchen Veröffentlichung wirkungslos, und Babel gibt eine Warnung aus, wenn sie angefordert wird.
StringEncryptionBoolescher Wert / Zeichenfolgefalse--stringencryptionGibt an, ob die Benutzerzeichenfolgen verschlüsselt werden. Der Wert wählt den Algorithmus aus: xor, hash oder stream 12.0 Ultimate.
SuppressIldasmBoolescher Wertfalse--ildasmGibt an, ob ILDASM daran gehindert wird, die verschleierte Assembly zu disassemblieren.
SuppressReflectionBoolescher Wert / Ganzzahlfalse--reflectionGibt an, ob ungültige Metadaten ausgegeben werden, an denen reflexionsbasierte Tools scheitern. Eine Ganzzahl legt die Stufe fest: Je höher die Stufe, desto mehr ungültige Metadaten werden erzeugt.
TamperingDetectionBoolescher Wertfalse--tamperingdetectionGibt an, ob die Manipulationserkennung eingeschaltet wird.
TrustedBundle 12.0 UltimateZeichenfolge--trustedbundleVertrauenswürdige iOS-Bundle-ID (CFBundleIdentifier), die die Prüfung der Paketintegrität unter iOS pinnt.
TrustedSigner 12.0 UltimateZeichenfolge--trustedsignerListe der SHA-256-Fingerabdrücke, je 64 Hexadezimalzeichen, der vertrauenswürdigen Signaturzertifikate von Android-APKs, die die Prüfung der Paketintegrität unter Android pinnt.
TrustedTeam 12.0 UltimateZeichenfolge--trustedteamVertrauenswürdige Team-ID des Apple-Entwicklerkontos, die die Prüfung der Paketintegrität unter iOS pinnt.
ValueEncryptionBoolescher Wert / Schlüssel=Wertfalse--valueencryptionGibt an, ob die konstanten Werte und Arrays verschlüsselt werden. Schlüssel-Wert-Paare wählen die Arten von Werten aus, die verschlüsselt werden.

Optimierungen

AttributTypStandardwertBefehlszeileBeschreibung
CleanAttributesBoolescher Wert / Zeichenfolgefalse--cleanattrsGibt an, ob unerwünschte Attribute entfernt werden. Reguläre Ausdrücke wählen die vollständigen Namen der zu entfernenden Attributtypen aus.
ConstRemovalBoolescher Wertfalse--constremovalGibt an, ob die Konstantenfelder entfernt werden.
DeadCodeEliminationBoolescher Wert / Zeichenfolgefalse--deadcodeGibt an, ob die Methoden, Eigenschaften und Ereignisse entfernt werden, die die Anwendung nicht verwendet. Reguläre Ausdrücke legen die Einstiegspunkte fest, an denen die Suche beginnt.
DisgregateRemovalBoolescher Wertfalse--disgregateremovalGibt an, ob die Metadaten von Eigenschaften und Ereignissen entfernt werden.
EnumRemovalBoolescher Wertfalse--enumremovalGibt an, ob die System.Enum-Typen entfernt werden.
InlineExpansionBoolescher Wertfalse--inlineexpansionGibt an, ob die Aufrufe der für die Inline-Erweiterung markierten Methoden durch den Methodenrumpf ersetzt werden.
SealClassesBoolescher Wertfalse--sealGibt an, ob die Klassen versiegelt werden, die in keiner Vererbungskette verwendet werden.

Codegenerierung

AttributTypStandardwertBefehlszeileBeschreibung
AddReferencesZeichenfolge--addreferenceListe der Assemblys, die der Ziel-Assembly als Referenzen hinzugefügt werden.
FrameworkZeichenfolgeName des Zielframeworks, der für die verarbeitete Assembly erzwungen wird.
GenerateDebugBoolescher Wert / Zeichenfolgefalse--debugGibt an, ob die Debugsymbole der verschleierten Assembly erzeugt werden. Als Wert kann der Pfad eines Symbolspeichers angegeben werden.
InstrumentBoolescher Wert / Zeichenfolgefalse--instrumentGibt an, ob der Code instrumentiert wird. Reguläre Ausdrücke wählen die vollständigen Namen der zu instrumentierenden Methoden aus.
InstrumentEmptyMethodsBoolescher Wertfalse--emptymethodsGibt an, ob die Methoden mit leerem Rumpf instrumentiert werden.
ModuleInitializerBoolescher Wert / Zeichenfolgefalse--moduleinitializerGibt an, ob der Ziel-Assembly der Code eines Modulinitialisierers hinzugefügt wird.
ModuleInitializerTargetZeichenfolge--moduleinitializerSignatur der statischen, parameterlosen Methode, die nach dem Laden des Moduls aufgerufen wird.
ModuleVersionIdBoolescher Wert / Zeichenfolgefalse--moduleversionidGibt an, ob die Modulversions-ID (MVID) der verschleierten Assembly gesetzt wird. Eine GUID-Zeichenfolge legt den Wert fest, andernfalls wird ein zufälliger Wert erzeugt.

Pakete

AttributTypStandardwertBefehlszeileBeschreibung
AndroidSigningKeyAliasZeichenfolge--keyaliasAlias des Schlüssels im Android-Keystore (APK-Pakete).
AndroidSigningKeyPassZeichenfolge--keypassPasswort des Schlüssels im Android-Keystore (APK-Pakete).
AndroidSigningKeyStoreZeichenfolge--keystoreDatei des Android-Keystores (APK-Pakete).
AndroidSigningStorePassZeichenfolge--storepassPasswort des Android-Keystores (APK-Pakete).
RemoveFilesZeichenfolge--removeListe der bereitgestellten Assemblys, die aus dem Paket entfernt werden.
SkipFilesZeichenfolge--skipListe der bereitgestellten Assemblys, die nicht verschleiert werden.
TakeFilesZeichenfolge--takeListe der bereitgestellten Assemblys, die verschleiert werden.
XapCompressionLevelGanzzahl6--compressKomprimierungsstufe des Pakets, von 0 (keine Komprimierung) bis 9 (XAP-Pakete).

Ausgaben der Aufgabe

AusgabeBeschreibung
CommandLineArgsDie an Babel übergebene Befehlszeile, verfügbar, wenn ProvideCommandLineArgs den Wert true hat.
ExitCodeDer von Babel zurückgegebene Exitcode.

Beispiel

Die folgende Aufgabe verschleiert die Zwischen-Assembly eines Android-Projekts mit .NET MAUI. Sie verwendet die Zeichenfolgenverschlüsselung STREAM und eine Manipulationserkennung, die an das APK-Signaturzertifikat gepinnt ist, und erfasst die an Babel übergebene Befehlszeile:

<Target Name="Obfuscate" AfterTargets="Compile" Condition="'$(DesignTimeBuild)' != 'true'"> <Babel InputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" OutputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" StringEncryption="stream" ControlFlowObfuscation="true" ControlFlowIterations="3" TamperingDetection="true" TrustedSigner="2924C53EE9C511E9F26E0720FD8151064F7621681667D7AB1899E551CDB25104" ProvideCommandLineArgs="true"> <Output TaskParameter="CommandLineArgs" ItemName="BabelCommandLineArgs" /> </Babel> <Message Importance="high" Text="@(BabelCommandLineArgs, ' ')" /> </Target>
Last updated on