加壳工具评估

加壳加密工具盘点与评估

概述

发布出去的DLL所面临的风险:

  1. 直接引用
  2. 反编译
  3. 反射

如果DLL一点措施都不做的话,上面任意一种都可以达到破解目的的。

保护方式盘点

  1. 混淆类的工具(如Dotfuscator,但是可以通过ILSpy、Reflector等反编译哦,直接COPY代码也能运行)
  2. 加密类的工具(如MaxToCode,网上有相应的破解教程)
  3. 加壳类的工具(如Sixxpack,网上有相应的破解教程)
  4. 强签名(签名只是防止项目中的某一个DLL被篡改了,不能防止反编译或反射的哦)

上面那些工具的目的归结出来大约完成两个目的,一是不能看,二是不能调,当然,我们也是实现这两个目的,只是手段不同。

一、不能看:.NET DLL可以包含托管堆代码(可以被反编译的)与非托管堆代码(不能被反编译,要反编译也是更高层次的了,不在讨范围内),我们将核心逻辑代码置于非托堆代码中,由托管堆代码提供接口供外部调用,调用时将非托管代码通过.NET动态编译特性编译后返回执行结果。这样就保证了不能看。

二、不能调:我们在非托管代码中加入验证调用者来源功能,判断调用者的HASH值是不是与在非托管代码中约定的HASH值(发布时需要提前生成相关引用者的HASH值存于非托管代码,最后生成非托管代码的DLL放于安装包中)一致,如一致则通过执行返回结果,不一致则返回空。这样就解决了非合法来源不能调的问题。

壳主要可以分为以下几种

  • 加密壳:通过加密和解密算法来保护软件代码,使其难以被破解。
  • 虚拟机壳:将软件代码转换为虚拟机指令集,使得破解者难以理解和分析。
  • 虚拟化壳:将软件运行在虚拟环境中,增加破解难度。
  • 压缩壳:通过压缩和解压缩算法来保护软件代码,减小软件体积并增加破解难度。

加壳原理

加壳原理 (1)

因为C#程序是通过.NET Framework或.NET Core运行时(CLR)来执行的,而不是直接在操作系统级别执行的。因此,PE文件中的入口点地址可能不同于C#程序的实际入口点。

在.NET程序中,CLR会负责加载和执行程序集,并在内部处理Main方法的调用。因此,即使PE文件的入口点地址为0,CLR仍会正确找到并执行C#程序的Main方法作为程序的入口点。这是.NET程序执行模型的特性,与传统的原生代码程序略有不同。

VMProtect

记录vmprotect对c# dll的影响

运行上完全无影响

VS调试中,需要将exe程序的生成配置的AnyCPU修改为具体的x32/x64版本,否则会引发异常

成效:

  • 使用dnspy无法查看反编译代码

c#简单获取硬件信息及加密

.net程序保护大盘点

vmprotect原理

VMP最主要的是对指定关键代码进行虚拟化,同时再加一些乱序跳转和大量的废指令,反调试,内存保护,导入表保护,使逆向分析人员无法分析执行的代码,经过VMP虚拟机的代码被膨胀好多倍

虚拟化前:

0ff4358cc6b45c7af9664a1dcca63a8d.png

虚拟化后:

55569acc5d065d116c130e958f122a88.png

代码被虚拟化之后,假如在调试器中单步执行会跳来跳去,一条汇编会变成成百上千条指令,无法判断他在干什么。

虚拟化部分

本质来讲VMP是一个基于堆栈机的intel指令模拟器,对过编译把原来的intel指令编译成精心设计的一组虚拟指令,然后用自己的一套引擎来解释执行。VMP加壳后,他会将原来的代码进行删除,导致基本完全无法进行还原。

VMP是防止别人逆向分析自己的代码,逆向分析的目的是分析代码,了解代码逻辑和代码的目的,然后加以利用。看样子,目前只能通过对虚拟机引擎的分析,来搞懂虚拟机引擎,然后理清代码流程,达到逆向分析的目的。

实现一个简单的虚拟机

相关过程

ConfuserEx

开源地址

免费,符合MIT开源协议

ConfuserEx是一个功能强大且广泛使用的.NET代码混淆工具。它支持多种混淆技术,包括控制流混淆、字符串加密、资源加密等。它具有灵活的配置选项,可以根据不同的需求进行定制(不足的是目前只支持.NET Framework 2.0/3.0/3.5/4.0/4.5/4.6/4.7/4.8不支持.NET Core代码混淆)。

针对需要二次在主程序开发的dll,进行如下保护:

  • AntiTamper
  • Anti Il Dasm Protection
  • Constaints Protection
  • Anti Dump Protection
  • Control Flow Protection
  • Reference Proxy Protection
  • Name Protection

针对exe可以额外进行:

  • Anti Debug
  • Resources Protection
  • Invalid Metadata Protection
  • Protection Hardening

功能详情可以参考此处

JIE.JIE.NET

开源地址

其他开源保护软件盘点

针对ios软件,不限制OC,Swift,Flutter,React Native,H5类app

x64dbg工具教程