仮想化保護ソリューションの問題

難読化は静的解析の難易度を高めることはできますが、動的解析を効果的に防ぐことはできません。コード仮想化の目的は、動的解析の難易度を高めることです。

Javaコードの仮想化は、カスタム仮想化エンジンを構築することで実現されます。これにより、直接実行可能なバイトコードを、これらの仮想化エンジンを介して実行できるようになります。カスタム仮想化エンジンであるため、外部から実行方法、命令形式などの情報に直接アクセスすることはできません。さらに、コードが大幅に拡張されるため、元のセマンティクス情報を含むコードのリバースエンジニアリングが困難になります。

仮想化がパフォーマンスに与える影響。

仮想化保護は非常に強力なコード保護ソリューションですが、仮想化保護の最大の問題は パフォーマンスカスタム仮想化エンジンは、JVMのように多くのパフォーマンス最適化策を採用することが難しく、JITなどのパフォーマンス最適化技術も適用できません。 JVMエンジン 前述のように、同じコードを通常の JVM として実行してパフォーマンスを比較すると、100 倍以上のパフォーマンスの違いが生じる可能性があります。

結論

仮想化保護は最も安全なコード保護手法ですが、パフォーマンスへの影響が大きいため、プログラム内のすべてのコードに適用することはできません。重要なコードのみを保護できますが、他のコードは依然として露出のリスクを伴います。コードの他の部分をターゲットにすることで、仮想化された部分に関する機能情報を取得できます。