Skip to Content
Neue Version 12 verfügbar 🎉

Leistung

Die Wert- und Arrayverschlüsselung nimmt geringe Laufzeitkosten in Kauf, um Ihre Konstanten und Arraydaten aus dem dekompilierten Code herauszuhalten.

  • Entschlüsselung bei jedem Zugriff. Jede verschlüsselte Konstante wird über einen Entschlüsselungsaufruf geholt, statt direkt geladen zu werden. Das Lesen eines Werts kostet daher mehr als ein einfaches ldc. Für den weitaus größten Teil des Codes ist das nicht spürbar. Es kann sich aber summieren, wenn eine häufig durchlaufene Schleife verschlüsselte Konstanten millionenfach liest.
  • Wiederaufbau des Arrays bei der ersten Verwendung. Ein verschlüsseltes Inline-Array wird aus seinen entschlüsselten Daten wieder aufgebaut, wenn es zum ersten Mal initialisiert wird.

Weil die Kosten davon abhängen, wie oft verschlüsselte Werte gelesen werden, wenden Sie die Verschlüsselung dort an, wo sie etwas Schützenswertes schützt, und nicht auf jedes Literal der Assembly. Zeigt eine bestimmte enge Schleife einen messbaren Mehraufwand, können Sie die Konstante in eine Variable außerhalb der Schleife auslagern oder die Verschlüsselung nur für die Datentypen einschalten, die tatsächlich sensible Daten enthalten (siehe Konfiguration).

Führen Sie wie bei jeder Schutzeinstellung Ihre Testsuite und gegebenenfalls Ihre Leistungsbenchmarks mit der verschleierten Assembly aus, um zu bestätigen, dass der Kompromiss für Ihre Anwendung vertretbar ist.

Last updated on