Secure Virtual Machine (SVM) ist die Bezeichnung für eine spezielle Virtual Machine (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 Licensing and Protection Services (SLPS)), wird aber seit 2009 von einem Microsoft-Partner vertrieben als "Software Code Protection": 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 (Secure Execution Environment Language - SEEL) erstellt. Die eigene SVM besitzt damit 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, dass 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, dass 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 Lizenzierung und Produktaktivierung (auch modulweise) eingesetzt werden.

Weitere Informationen finden Sie in diesen Beiträgen:

Secure Execution Environment Language
Software Licensing and Protection Services