.Net虚拟机(CLR/JIT)加密原理(版权保护)
💡
原文中文,约1900字,阅读约需5分钟。
📝
内容提要
本文介绍了虚拟机加密的实现原理,DHVM修正JIT入口的过程,保护度较高,需要了解虚拟机原理或机器码含义才能进行Hook。
🎯
关键要点
- 虚拟机加密通过修改JIT即时编译器入口函数来实现,保护托管DLL的ILCode。
- 在.Net7中,JIT、GC等实现了分离和解耦,可以定制和更改。
- clrjit.dll是模块化的JIT库,具体路径为C:\Program Files\dotnet\shared\Microsoft.NETCore.App\7.0.10\clrjit.dll。
- DHVM(DNGuard HMVM)通过修改JIT入口来保护被加密的托管DLL。
- 每个被加密的托管DLL会注入特定代码,CLR在加载时会先于托管Main加载这些代码。
- DHVM函数在托管Main加载之前修改JIT入口,确保跳转到DHVM内部进行ILCode的修正。
- 虚拟机加密的保护程度较高,需要了解虚拟机原理或机器码含义才能进行Hook。
➡️