.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。
➡️

继续阅读