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
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
BabelDirectory | Zeichenfolge | Ä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. | ||
DbgHelpDllDir | Zeichenfolge | --dbghelpdlldir | Pfad des Ordners, der dbghelp.dll enthält. | |
DetectIfObfuscated | Boolescher Wert / Zeichenfolge | false | --isobfuscated | Gibt 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. |
EnableObfuscationAgent | Boolescher Wert | true | --agent | Gibt 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. |
License | Zeichenfolge | --license | Vollständiger Pfad der Lizenzdatei oder eine Liste von Verzeichnissen, in denen nach Lizenzdateien gesucht wird. | |
NoConfiguration | Boolescher Wert | false | --noconfig | Gibt an, ob die in der Babel-Konfigurationsdatei gespeicherten Standardwerte ignoriert werden. |
NoWarnings | Zeichenfolge | --nowarn | Liste der Warncodes, die ignoriert werden. | |
ProvideCommandLineArgs | Boolescher Wert | false | Gibt an, ob die an Babel übergebene Befehlszeile protokolliert und im Ausgabeelement CommandLineArgs zurückgegeben wird. | |
QuickRules | Zeichenfolge | --quickrule | Definitionen von Schnellregeln. | |
RandomSeed | Zeichenfolge | --randomseed | Startwert des Zufallszahlengenerators, der bei der Verschleierung verwendet wird. | |
RemoveKey | Boolescher Wert | false | --removekey | Gibt an, ob der starke Name aus der verschleierten Assembly entfernt wird. |
SatelliteAssemblies | Zeichenfolge | --satellite | Liste der Satelliten-Assembly-Dateien, die verarbeitet werden. | |
SearchDirectories | Zeichenfolge | --addsearch | Liste der Verzeichnisse, in denen die referenzierten Assemblys gesucht werden. References wird als Alias akzeptiert. | |
SearchSatelliteAssemblies | Boolescher Wert | true | --satellite | Gibt an, ob die Satelliten-Assemblys des Ziels gesucht und verarbeitet werden. |
ShowLogo | Boolescher Wert | true | --logo | Gibt an, ob die Babel-Version und die Copyright-Informationen ausgegeben werden. |
ShowStatistics | Boolescher Wert | true | --statistics | Gibt an, ob die Verschleierungsstatistiken am Ende des Vorgangs angezeigt werden. Nur Boolean: Um die Statistiken in einer Datei zu speichern, verwenden Sie StatisticsFile. |
StatisticsFile | Zeichenfolge | --statistics | Pfad der Datei, in der die Verschleierungsstatistiken gespeichert werden. Wird ignoriert, wenn ShowStatistics den Wert false hat. | |
TargetAssemblyName | Zeichenfolge | nochange | --assemblyname | Herkunft des Namens der Ziel-Assembly: nochange, inputfilename, outputfilename oder name=<assembly name>. |
ToolExe | Zeichenfolge | Name der ausführbaren Babel-Datei, babel.exe oder babel.dll. | ||
ToolPath | Zeichenfolge | Verzeichnis der ausführbaren Babel-Datei. | ||
Trace | Zeichenfolge | --trace | Liste 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. | |
Use | Schlüssel=Wert | --use | Verwendungsoptionen als Schlüssel-Wert-Paare. | |
VerboseLevel | Ganzzahl | 1 | --verbose | Ausführlichkeit der Konsolenausgabe. 0 schaltet die Meldungen aus, Werte über 10 zeigen Debuginformationen. |
WarningsAsErrors | Zeichenfolge | --warnaserror | Liste der Warncodes, die als Fehler gemeldet werden. Ein Fehler hält die Verschleierung an. | |
WarningsAsInfos | Zeichenfolge | --warnasinfo | Liste der Warncodes, die als Informationsmeldungen gemeldet werden. | |
XmlRules | Zeichenfolge | Eingebettete XML-Regelelemente, siehe XML-Regeln. |
Eingabedateien
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
InputFile | Zeichenfolge | Pfad der Assembly, die verschleiert wird. | ||
KeyContainer | Zeichenfolge | --keyname | Name des Schlüsselcontainers für den starken Namen (nur Windows). | |
KeyFile | Zeichenfolge | --keyfile | Pfad der Schlüsseldatei für den starken Namen, mit der die verschleierte Assembly signiert wird. | |
KeyPwd | Zeichenfolge | --keypwd | Passwort der Schlüsseldatei für den starken Namen oder des Zertifikats. | |
MapInFiles | Zeichenfolge | --mapin | Liste der XML-Map-Dateien bereits verschleierter Assemblys, mit denen die Referenzen auf deren Symbole umbenannt werden. | |
Project | Zeichenfolge | --project | Pfad der Projektdatei eines Babel-Verschleierungsprojekts. | |
RulesFiles | Zeichenfolge | --rules | Liste der XML-Regeldateien, die verarbeitet werden. |
Ausgabedateien
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
GenerateLogFile | Boolescher Wert | false | --logfile | Gibt an, ob ein Verschleierungsprotokoll erzeugt wird. Der Standardname der Protokolldatei ist <target assembly>.log. |
GenerateMapOutFile | Boolescher Wert | false | --mapout | Gibt an, ob eine Map-Datei der Verschleierung erzeugt wird. Der Standardname der Map-Datei ist <target assembly>.xml.map. |
LogFile | Zeichenfolge | --logfile | Pfad der Protokolldatei der Verschleierung. | |
MakeProject | Zeichenfolge | --makeproject | Pfad der MSBuild-Projektdatei, die aus den Einstellungen der Aufgabe erstellt wird. | |
MapOutFile | Zeichenfolge | --mapout | Pfad der Map-Datei der Verschleierung. | |
OutputFile | Zeichenfolge | --output | Pfad der verschleierten Assembly. | |
PdbFile | Zeichenfolge | --pdb | Pfad der Debugsymboldatei. | |
PdbPwd | Zeichenfolge | --pdbpwd | Passwort der Debugsymboldatei. |
Plugins
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
Plugins | Zeichenfolge | --plugin | Liste der Plugin-Assembly-Dateien. | |
PluginsArguments | Schlüssel=Wert | --argument | Plugin-Argumente als Schlüssel-Wert-Paare. |
Zusammenführen und Einbetten
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
CopyAttributes | Boolescher Wert / Zeichenfolge | false | --copyattrs | Gibt 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. |
DependenciesManifest | Boolescher Wert | true | --jsonmanifest | Gibt an, ob das Abhängigkeitsmanifest .deps.json der Ziel-Assembly aktualisiert wird, wenn Assemblys zusammengeführt oder eingebettet werden. |
EmbedAssemblies | Zeichenfolge | --embed | Liste der Assembly-Dateien, die in die Ziel-Assembly eingebettet werden. | |
Internalize | Boolescher Wert | false | --internalize | Gibt an, ob die Sichtbarkeit der zusammengeführten Typen auf die Ziel-Assembly beschränkt wird. |
MergeAssemblies | Zeichenfolge | Liste der Assembly-Dateien, die mit der Ziel-Assembly zusammengeführt werden. |
Umbenennung
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
FlattenNamespaces | Boolescher Wert / Zeichenfolge | true | --flatns | Gibt an, ob die umbenannten Typen in den globalen Namespace verschoben werden. Eine Zeichenfolge legt stattdessen einen gemeinsamen Namespacenamen für die umbenannten Typen fest. |
NameLength | Ganzzahl / Schlüssel=Wert | --namelength | Mindestlänge der verschleierten Namen. Schlüssel-Wert-Paare weisen die Länge einer bestimmten Symbolart zu. | |
NamePrefix | Zeichenfolge / Schlüssel=Wert | --nameprefix | Präfix der verschleierten Namen, $name oder eine beliebige Zeichenfolge. Schlüssel-Wert-Paare weisen das Präfix einer bestimmten Symbolart zu. | |
ObfuscateEvents | Boolescher Wert | true | --events | Gibt an, ob Ereignisse umbenannt werden. |
ObfuscateFields | Boolescher Wert | true | --fields | Gibt an, ob Felder umbenannt werden. |
ObfuscateMethods | Boolescher Wert | true | --methods | Gibt an, ob Methoden umbenannt werden. |
ObfuscateParameters | Boolescher Wert | true | --parameters | Gibt an, ob Methodenparameter umbenannt werden. |
ObfuscateProperties | Boolescher Wert | true | --properties | Gibt an, ob Eigenschaften umbenannt werden. |
ObfuscateTypes | Boolescher Wert | true | --types | Gibt an, ob Typen umbenannt werden. |
ObfuscateXaml | Boolescher Wert / Schlüssel=Wert | false | --xaml | Gibt an, ob die Symbole umbenannt werden, die von XAML- und BAML-Ressourcen referenziert werden. Schlüssel-Wert-Paare konfigurieren die Umbenennung. |
OverloadedRenaming | Boolescher Wert / Schlüssel=Wert | false | --overloaded | Gibt an, ob derselbe Name für Member mit unterschiedlichen Signaturen wiederverwendet wird. Schlüssel-Wert-Paare wählen aus, welche Member überladen werden. |
UnicodeNormalization | Boolescher Wert / Zeichenfolge | false | --unicode | Gibt 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. |
VirtualFunctions | Boolescher Wert / Schlüssel=Wert | true | --virtual | Gibt an, ob virtuelle Member umbenannt werden. Schlüssel-Wert-Paare konfigurieren die Umbenennung externer Überschreibungen. |
XmlDocFiles | Zeichenfolge | --xmldoc | Liste der XML-Dokumentationsdateien, die zusammen mit der Assembly verarbeitet werden. XmlDoc wird als älterer Alias akzeptiert. |
Kontrollflussverschleierung
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
ControlFlowObfuscation | Boolescher Wert / Schlüssel=Wert | false | --controlflow | Gibt 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. |
ControlFlowIterations | Ganzzahl | 3 | --iterations | Anzahl der Iterationen der Algorithmen der Kontrollflussverschleierung. 0 schaltet die Kontrollflussverschleierung aus. ILIterations und Iterations werden als Aliase akzeptiert. |
EmitInvalidOpcodes | Boolescher Wert / Zeichenfolge | false | --invalidopcodes | Gibt 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
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
DebuggingProtection | Boolescher Wert | false | --antidebugging | Gibt an, ob der Debugging-Schutz eingeschaltet wird. |
DynamicProxy | Boolescher Wert / Zeichenfolge | false | --proxy | Gibt 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. |
DynamicProxyCallFilters | Zeichenfolge | --proxy | Liste regulärer Ausdrücke, die die Methodenaufrufe auswählen, die über Proxys geleitet werden. | |
MsilEncryption | Boolescher Wert / Zeichenfolge | false | --msilencryption | Gibt 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. |
ResourceEncryption | Boolescher Wert / Schlüssel=Wert | false | --resourceencryption | Gibt an, ob die verwalteten Ressourcen verschlüsselt werden. Schlüssel-Wert-Paare schalten Verschlüsselung und Komprimierung getrennt ein. |
SingleFile 12.0 | Boolescher Wert | false | --singlefile | Zeigt 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. |
StringEncryption | Boolescher Wert / Zeichenfolge | false | --stringencryption | Gibt an, ob die Benutzerzeichenfolgen verschlüsselt werden. Der Wert wählt den Algorithmus aus: xor, hash oder stream 12.0 Ultimate. |
SuppressIldasm | Boolescher Wert | false | --ildasm | Gibt an, ob ILDASM daran gehindert wird, die verschleierte Assembly zu disassemblieren. |
SuppressReflection | Boolescher Wert / Ganzzahl | false | --reflection | Gibt 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. |
TamperingDetection | Boolescher Wert | false | --tamperingdetection | Gibt an, ob die Manipulationserkennung eingeschaltet wird. |
TrustedBundle 12.0 Ultimate | Zeichenfolge | --trustedbundle | Vertrauenswürdige iOS-Bundle-ID (CFBundleIdentifier), die die Prüfung der Paketintegrität unter iOS pinnt. | |
TrustedSigner 12.0 Ultimate | Zeichenfolge | --trustedsigner | Liste 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 Ultimate | Zeichenfolge | --trustedteam | Vertrauenswürdige Team-ID des Apple-Entwicklerkontos, die die Prüfung der Paketintegrität unter iOS pinnt. | |
ValueEncryption | Boolescher Wert / Schlüssel=Wert | false | --valueencryption | Gibt 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
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
CleanAttributes | Boolescher Wert / Zeichenfolge | false | --cleanattrs | Gibt an, ob unerwünschte Attribute entfernt werden. Reguläre Ausdrücke wählen die vollständigen Namen der zu entfernenden Attributtypen aus. |
ConstRemoval | Boolescher Wert | false | --constremoval | Gibt an, ob die Konstantenfelder entfernt werden. |
DeadCodeElimination | Boolescher Wert / Zeichenfolge | false | --deadcode | Gibt 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. |
DisgregateRemoval | Boolescher Wert | false | --disgregateremoval | Gibt an, ob die Metadaten von Eigenschaften und Ereignissen entfernt werden. |
EnumRemoval | Boolescher Wert | false | --enumremoval | Gibt an, ob die System.Enum-Typen entfernt werden. |
InlineExpansion | Boolescher Wert | false | --inlineexpansion | Gibt an, ob die Aufrufe der für die Inline-Erweiterung markierten Methoden durch den Methodenrumpf ersetzt werden. |
SealClasses | Boolescher Wert | false | --seal | Gibt an, ob die Klassen versiegelt werden, die in keiner Vererbungskette verwendet werden. |
Codegenerierung
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
AddReferences | Zeichenfolge | --addreference | Liste der Assemblys, die der Ziel-Assembly als Referenzen hinzugefügt werden. | |
Framework | Zeichenfolge | Name des Zielframeworks, der für die verarbeitete Assembly erzwungen wird. | ||
GenerateDebug | Boolescher Wert / Zeichenfolge | false | --debug | Gibt an, ob die Debugsymbole der verschleierten Assembly erzeugt werden. Als Wert kann der Pfad eines Symbolspeichers angegeben werden. |
Instrument | Boolescher Wert / Zeichenfolge | false | --instrument | Gibt an, ob der Code instrumentiert wird. Reguläre Ausdrücke wählen die vollständigen Namen der zu instrumentierenden Methoden aus. |
InstrumentEmptyMethods | Boolescher Wert | false | --emptymethods | Gibt an, ob die Methoden mit leerem Rumpf instrumentiert werden. |
ModuleInitializer | Boolescher Wert / Zeichenfolge | false | --moduleinitializer | Gibt an, ob der Ziel-Assembly der Code eines Modulinitialisierers hinzugefügt wird. |
ModuleInitializerTarget | Zeichenfolge | --moduleinitializer | Signatur der statischen, parameterlosen Methode, die nach dem Laden des Moduls aufgerufen wird. | |
ModuleVersionId | Boolescher Wert / Zeichenfolge | false | --moduleversionid | Gibt 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
| Attribut | Typ | Standardwert | Befehlszeile | Beschreibung |
|---|---|---|---|---|
AndroidSigningKeyAlias | Zeichenfolge | --keyalias | Alias des Schlüssels im Android-Keystore (APK-Pakete). | |
AndroidSigningKeyPass | Zeichenfolge | --keypass | Passwort des Schlüssels im Android-Keystore (APK-Pakete). | |
AndroidSigningKeyStore | Zeichenfolge | --keystore | Datei des Android-Keystores (APK-Pakete). | |
AndroidSigningStorePass | Zeichenfolge | --storepass | Passwort des Android-Keystores (APK-Pakete). | |
RemoveFiles | Zeichenfolge | --remove | Liste der bereitgestellten Assemblys, die aus dem Paket entfernt werden. | |
SkipFiles | Zeichenfolge | --skip | Liste der bereitgestellten Assemblys, die nicht verschleiert werden. | |
TakeFiles | Zeichenfolge | --take | Liste der bereitgestellten Assemblys, die verschleiert werden. | |
XapCompressionLevel | Ganzzahl | 6 | --compress | Komprimierungsstufe des Pakets, von 0 (keine Komprimierung) bis 9 (XAP-Pakete). |
Ausgaben der Aufgabe
| Ausgabe | Beschreibung |
|---|---|
CommandLineArgs | Die an Babel übergebene Befehlszeile, verfügbar, wenn ProvideCommandLineArgs den Wert true hat. |
ExitCode | Der 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>