I've been researching The for a project, and here's a summary of what I found useful.
Ready to learn more? Subscribe to our newsletter for weekly tutorials and tips.
正文
Obfuscation can enhance the difficulty of static analysis, but cannot effectively prevent dynamic analysis. The purpose of code virtualization is to increase the difficulty of dynamic analysis.
Java code virtualization is achieved by building custom virtualization engines, allowing bytecodes that could be executed directly to be executed through these virtualization engines. Since it is a custom virtualization engine, the external world cannot directly access its execution method, instruction format, and other information. Moreover, it results in significant code expansion, making it difficult to reverse engineer the code containing its original semantic information.
Virtualization protection is an extremely strong code protection solution, but the biggest problem with virtualization protection is
. Custom virtualization engines are difficult to adopt numerous performance optimization measures like JVM and cannot apply performance optimization techniques such as JIT. You can try using the
we mentioned before to execute the same code as a regular JVM and compare the performance, which may result in a performance difference of over 100 times.
Virtualization protection is the most secure code protection method, but due to its significant impact on performance, it cannot be applied to all code in a program. It can only protect critical code, while other code still carries the risk of exposure. By targeting other parts of the code, one can obtain functional information about the virtualized portion of the code.
More Details
There are a few more points worth noting. First, browser compatibility varies across different browsers. Second, performance optimization is crucial when handling large amounts of data. Finally, key management is also an important consideration.
That's all for this comprehensive guide. I hope you found it helpful! Feel free to leave comments if you have questions.
Reference: The issues with VM protection - Protector4J