跳到主要内容

使用命令行对C#的dll和exe文件进行混淆加密

C#作为一种托管语言,其生成的中间代码(IL代码)极易被反编译工具还原为源码。据统计,超过83%的商业软件曾遭遇过代码逆向风险,这可能导致核心算法泄露、软件授权被绕过。因此,针对C#程序,在发布前进行混淆与加密是一项必不可少的操作。

本文将介绍如何使用恒盾C#混淆加密大师1.3.0版本,通过命令行的方式完成代码的混淆与加密。这种方式不仅高效,还便于与程序发布流程集成,避免传统手动操作软件的繁琐。

如果你想了解恒盾C#混淆加密大师更多内容, 可以访问官网:

点击进入恒盾C#混淆加密大师官网

快速命令行加密混淆流程

1. 安装恒盾C#混淆加密大师

首先,下载并安装恒盾C#混淆加密大师最新版本,可以通过以下链接获取:

点击下载恒盾C#混淆加密大师

安装完成后,打开软件,选择需要加密的程序,并配置混淆选项。

2. 导出配置文件

在软件界面的右上角菜单中选择“文件 > 导出配置”,将配置文件存储在本地。例如,保存为 C:\app\config.csop

3. 定位命令行工具

在软件安装目录中找到命令行工具 CLI.exe。例如,目录路径为 C:\app\CSharpObfuscator1.3.0\CLI.exe

4. 执行命令行混淆加密

打开系统的命令提示符(cmd),输入如下命令对程序进行混淆加密:

C:\app\CSharpObfuscator1.3.0\CLI.exe --config C:\app\config.csop

加密处理完成后,混淆后的程序将被存储到指定的输出路径。具体加密过程信息如下图所示:

混淆加密过程信息

5. 加密完成的文件在哪

混淆加密完成后,处理后的程序将存储在相应的输出路径中,如下图所示:

加密后的文件

混淆配置文件详细说明

配置文件 config.csop 是一个JSONC格式文件,内部带有详细注释,便于用户根据需求进行修改。以下是一个示例配置文件:

{
// 需要加密的dll或者exe的路径
"ModulePath": "C:/app/Dummy.exe",

// 输出文件路径
"OutputPath": "C:/app/Dummy_obf.exe",

// 防调试, true为开启, false为关闭
"AntiDebug": false,

// 防ILDsm, true为开启, false为关闭
"AntiILDasm": true,

// 防DnSpy, true为开启, false为关闭
"AntiDnSpy": false,

// 防篡改, true为开启, false为关闭
"AntiModify": false,

// 加壳, true为开启, false为关闭
"AddShell": false,

// 引用列表混淆, true为开启, false为关闭
"DupTypeRef": false,

// 防de4dot, true为开启, false为关闭
"AntiDe4dot": false,

// 防断点, true为开启, false为关闭
"AntiBreakPoint": false,

// 防虚拟机, true为开启, false为关闭
"AntiVM": true,

// 加密资源文件, true为开启, false为关闭
"ResourceProtect": false,

// 防ILSpy, true为开启, false为关闭
"AntiILSpy": false,

// 原生化EXE, true为开启, false为关闭
"Nativefier": false,

// 防内存提取, true为开启, false为关闭
"AntiDump": false,

// 垃圾域, true为开启, false为关闭
"JunkField": false,

// 垃圾空指令, true为开启, false为关闭
"JunkNop": true,

// 垃圾函数, true为开启, false为关闭
"JunkMethod": false,

// 垃圾类型, true为开启, false为关闭
"JunkType": false,

// 垃圾字符串, true为开启, false为关闭
"JunkString": false,

// 文件信息混淆, true为开启, false为关闭
"AssemblyConfusor": true,

// 布尔混淆, true为开启, false为关闭
"BooleanConfusor": true,

// 文件时间混淆, true为开启, false为关闭
"TimeConfusor": false,

// 流程混淆, true为开启, false为关闭
"ControlFlowConfusor": false,

// 字符串加密, true为开启, false为关闭
"StringConfusor": false,

// DOS头混淆, true为开启, false为关闭
"DosHeaderConfusor": false,

// 字符串拆分, true为开启, false为关闭
"StringSplitConfusor": true,

// 整数混淆, true为开启, false为关闭
"IntConfusor": false,

// 小数混淆, true为开启, false为关闭
"DecimalConfusor": false,

// 函数调用混淆, true为开启, false为关闭
"CalliConfusor": false,

// 字符串隐藏, true为开启, false为关闭
"HideStringConfusor": false,

// 数字隐藏, true为开启, false为关闭
"HideIntConfusor": false,

// 函数体隐藏, true为开启, false为关闭
"HideMethodBodyConfusor": false,

// 异步混淆, true为开启, false为关闭
"AwaitConfusor": false,

// 链式函数混淆, true为开启, false为关闭
"ProxyRefConfusor": false,

// 错误函数体混淆, true为开启, false为关闭
"InvalidILConfusor": false,

// 重命名模式, 1为字母数字模式, 2为UUID模式, 3为特殊字符模式, 4为Base64模式, 5为英文单词模式
"RenameMode": 1,

// Module重命名, true为开启, false为关闭
"ModuleRename": false,

// 域重命名, true为开启, false为关闭
"FieldRename": false,

// 函数重命名, true为开启, false为关闭
"MethodRename": false,

// 命名空间重命名, true为开启, false为关闭
"NamespaceRename": false,

// 参数重命名, true为开启, false为关闭
"ParamRename": false,

// 类型重命名, true为开启, false为关闭
"TypeRename": false,

// 忽略函数列表
"FuncIgnoreList": "TestFunc, NewClass.TestFunc, NameSpace.NewClass.TestFunc"
}

此文件的字段与软件界面的选项配置一致,更多信息可以参考混淆选项详解

自动生成配置文件

如果您不熟悉如何编辑配置文件,可以直接在软件内选择需要的混淆配置,然后通过“文件 > 导出配置”功能自动生成配置文件。

更多混淆选项

详细的混淆字段与功能描述可参阅官方文档:混淆选项详解

总结

通过命令行方式进行混淆加密方便快捷,非常适合集成到自己的发布系统中实现自动化发布,更高效地保护C#程序的代码与核心功能,避免被恶意反编译。