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.