Secure Virtual Machine (SVM)

Eintrag zuletzt aktualisiert am: 25.04.2014

Secure Virtual Maschine (SVM) ist die Bezeichnung für eine spezielle Virtual Maschine (Ablaufumgebung) für .NET-Anwendungen, die im Gegensatz zu der Standard-VM der CLR gegen die Dekompilierung stark erschwert.

Die SVM war ein Produkt von Microsoft (Software Licencing and Protection Services (SLPS)), wird aber seit 2009 von einem Microsoft Partner vertrieben als "Software Code Protection": http://www.inishtech.com/. Microsoft ist Teilhaber an InishTech.

Durch sogenannte Permutationen wird für jeden Hersteller oder sogar jedes Produkt eine eigene SVM mit einem eigenen Befehlssatz erstellt. Die eigene SVM besitzt einen eigenen, undokumentierten Befehlssatz. Anwendungen werden nach der eigentlichen Kompilierung nach MSIL/CIL nochmals umgewandelt in die SVM-spezifische Zwischensprache. Die Anwendung kann danach nur noch mit der SVM ausgeführt werden, was bedeutet, das die SVM mitausgeliefert werden muss. Eine SVM hat eine Größe von rund 1 MB.

Zusätzlich zu dem eigenen Befehlssatz verwendet die SVM auch noch Verschlüsselung, um die Dekompilierung nochmals zu erschweren. Eine Dekompilierung einer SVM-geschützten Anwendung ist jedoch nicht komplett unmöglich.

Wichtig ist, der SVM-Schutz die Leistung (Ausführungsgeschwindigkeit) wesentlich reduziert. Daher sollte man niemals eine ganze Anwendung, sondern allenfalls besonders sensible und/oder innovative Bereiche einer Anwendung schützen.

SVM kann auch für Lizensierung und Produktaktivierung (auch modulweise) eingesetzt werden.