Probleme mit Virtualisierungsschutzlösungen

Verschleierung kann die Schwierigkeit einer statischen Analyse erhöhen, eine dynamische Analyse jedoch nicht wirksam verhindern. Der Zweck der Codevirtualisierung besteht darin, die Schwierigkeit der dynamischen Analyse zu erhöhen.

Die Virtualisierung von Java-Code wird durch den Aufbau benutzerdefinierter Virtualisierungs-Engines erreicht, sodass Bytecodes, die direkt ausgeführt werden könnten, über diese Virtualisierungs-Engines ausgeführt werden können. Da es sich um eine benutzerdefinierte Virtualisierungs-Engine handelt, kann die Außenwelt nicht direkt auf die Ausführungsmethode, das Befehlsformat und andere Informationen zugreifen. Darüber hinaus führt es zu einer erheblichen Codeerweiterung, wodurch es schwierig wird, den Code, der seine ursprünglichen semantischen Informationen enthält, zurückzuentwickeln.

Die Auswirkungen der Virtualisierung auf die Leistung.

Der Schutz der Virtualisierung ist eine äußerst starke Code-Schutzlösung, aber das größte Problem beim Schutz der Virtualisierung istLeistung. Benutzerdefinierte Virtualisierungs-Engines können zahlreiche Leistungsoptimierungsmaßnahmen wie JVM nur schwer übernehmen und können keine Leistungsoptimierungstechniken wie JIT anwenden. Sie können es mit dem versuchenJVM-Motor Wir haben zuvor erwähnt, dass wir denselben Code wie eine normale JVM ausführen und die Leistung vergleichen möchten, was zu einem Leistungsunterschied von über 100-fachen führen kann.

Fazit

Der Virtualisierungsschutz ist die sicherste Codeschutzmethode, kann jedoch aufgrund seiner erheblichen Auswirkungen auf die Leistung nicht auf den gesamten Code in einem Programm angewendet werden. Es kann nur kritischen Code schützen, während bei anderem Code immer noch das Risiko einer Offenlegung besteht. Indem man auf andere Teile des Codes abzielt, kann man funktionale Informationen über den virtualisierten Teil des Codes erhalten.