.NET8强加密工具有哪些?你知道吗?
创始人
2025-07-09 19:30:17
0

前言

.NET程序由于众所周知的原因,因为它是一个托管中间语言代码,也即是MSIL,天然性的易于被破解。即使是现在的AOT技术,因为通过一个C++的引导程序BootStrap(.Net8的AOT引导程序BootStrap)引导,所以其逆向难度依然是容易级的。了解其加密原理,针对性的保护就显得比较重要了。

这里说的强加密是虚拟机(CLR/JIT)加密,加密软件自带的算法加密,逆向有一定难度的.NET加密工具。没有虚拟机加密这个基本功能,基本上不推荐。

  1. DHVM(DNGuard HVM),它也是加密虚拟机的JIT,IL字节码替代。
  2. VBP(Virbox Protector),它是加密虚拟机的JIT,以及其它一些比如IL的的混淆,虚拟化等,主要偏向于托管的加密。
  3. .NET8的AOT非托管,推荐用VMP,这个工具在非托管层级加密的强度首屈一指。它利用自带的虚拟机指令对程序进行更改加密。

研究VBP和DHVM的时候,很明显的感觉到VBP在托管方面较强,它基本上做到了一个托管的DLL hook了JIT的编译流程,加密托管DLL。但DHVM给人的感受完全相反。DHVM在非托管上具有较强的加密手段,所以它需要带一个非托管的RunHVM64.dll在对JIT进行操作。

详述

参考以下代码:

static void ABC()
 {
     Console.WriteLine("Call ABC");
 }
 static void DEF()
 {
     Console.WriteLine("Call DEF");
 }
 static void Main(string[] args)
 {
     ABC();
     DEF();
     Console.WriteLine("Call Main");
     Console.ReadLine();
 }

VBP上,它加密了MSIL程序集和函数名称,此后又加密了IL的指令。它的JIT Hook方式跟DHVM基本上雷同,只不过代码实现方式不一样。仅此而已。

至于代码的区别在于,ABC和DEF函数在VBP里面被内联了,它的MSIL二进制如下:

00 72 01 00 00 70 28 11 00 00 0a 00 2a 00 // ABC函数
00 72 13 00 00 70 28 11 00 00 0a 00 2a 00 // DEF函数

ABC和DEF函数被内联到了托管Main函数里面,类似于Console.WriteLine("Call Main");的这种格式的调用。先传递一个字符串,也就是MSIL的二进制:

00 72 01 00 00 70

然后Console.WriteLine调用以及返回,也就是MSIL二进制

28 11 00 00 0a 00 2a 00 //2a:ret(返回) 00:nop

在静态的托管DLL里面,这个MSIL是伪装的,真正的MSIL需要解密之后,才能够形成如上MSIL赋给JIT的ILCode让其正常编译。这里需要的是解密前的静态码(比如例子的特征码:A3 35 57 22),无痕hook即可。

然DHVM里面没有内联,但在非托管里面存储了IL代码,如下:

0000000180474088 4C 8B 5E 10   mov r11,qword ptr [rsi+10h]  
000000018047408C 4C 89 5F 10   mov qword ptr [rdi+10h],r11

DHVM也需要通过解密来形成最后的MSIL结果,但是因为它有非托管的静态固有地址,所以不需要逆出其解密的地方,即可hook之。

ABP和DHVM的差别在于,前者只要逆出了其原理基本上一马平川,可以静态无痕其解密前的字节码。而DHVM则是综合性质更强,具备的知识更多,才可以静态无痕其ASM。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
30分钟搞定iOS自定义相机 最近公司的项目中用到了相机,由于不用系统的相机,UI给的相机切图,必须自定义才可以。就花时间简单研究...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...