命令行工具使用指南
1. 选择需要加密的程序,并配置混淆选项。

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

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

4. 执行命令行混淆加密
打开系统的命令提示符(cmd),输入如下命令对程序进行混淆加密:
基本用法:
C:\app\CSharpObfuscator1.4.5\CLI.exe obf --config C:\app\config.csop
高级用法(覆盖配置文件中的路径):
C:\app\CSharpObfuscator1.4.5\CLI.exe obf --config C:\app\config.csop --input C:\app\MyApp.exe --output C:\app\MyApp_obf.exe
注意: obf 前缀可以省略,以下命令等效:
C:\app\CSharpObfuscator1.4.5\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,
// 程序集重命名, true为开启, false为关闭
"AssemblyRename": false,
// 属性重命名, true为开启, false为关闭
"PropertyRename": false,
// 随机种子, 用于控制混淆的随机性, 相同的种子会产生相同的混淆结果, 留空则每次随机生成
"Seed": "",
// 忽略函数列表
"FuncIgnoreList": "TestFunc, NewClass.TestFunc, NameSpace.NewClass.TestFunc",
}
此文件的字段与软件界面的选项配置一致,更多信息可以参考混淆选项详解。
自动生成配置文件
如果您不熟悉如何编辑配置文件,可以直接在软件内选择需要的混淆配置,然后通过"文件 > 导出配置"功能自动生成配置文件。
软件注册
使用命令行工具时,可以通过 register 命令进行软件注册:
C:\app\CSharpObfuscator1.3.0\CLI.exe register --code your-registration-code
注册成功后,注册信息将保存在系统中,后续混淆操作将自动使用已注册的授权。
命令行集成优势
- 自动化部署:可以轻松集成到CI/CD流程中,实现代码编译后的自动混淆
- 批量处理:通过脚本可以批量处理多个程序集
- 无人值守:配置完成后可以在后台自动执行,无需人工干预
- 可重复性:确保每次混淆过程使用相同的配置参数
常见问题
Q: 命令行工具支持哪些参数?
A: 命令行工具支持以下命令和参数:
obf 命令(混淆加密):
--config <path>(必需):指定混淆配置文件路径--input <path>(可选):指定要加密的 dll/exe 路径,会覆盖配置文件中的 ModulePath--output <path>(可选):指定输出文件路径,会覆盖配置文件中的 OutputPath
register 命令(软件注册):
--code <code>(必需):注册码
注意:obf 命令前缀可以省略,保持向后兼容。
Q: 可以直接在命令行指定混淆选项吗?
A: 大部分混淆选项需要通过配置文件指定,但您可以使用 --input 和 --output 参数来覆盖配置文件中的输入输出路径。这在需要批量处理多个文件但使用相同混淆配置时非常有用。
示例:
CLI.exe obf --config config.csop --input App1.exe --output App1_obf.exe
CLI.exe obf --config config.csop --input App2.exe --output App2_obf.exe
Q: 如何在批处理文件中使用?
A: 可以创建.bat文件,在其中添加命令行调用,例如:
基本批处理:
@echo off
"C:\app\CSharpObfuscator1.3.0\CLI.exe" obf --config "C:\app\config.csop"
echo 混淆加密完成!
pause
批量处理多个文件:
@echo off
set OBFUSCATOR="C:\app\CSharpObfuscator1.3.0\CLI.exe"
set CONFIG="C:\app\config.csop"
%OBFUSCATOR% obf --config %CONFIG% --input "C:\app\App1.exe" --output "C:\app\App1_obf.exe"
%OBFUSCATOR% obf --config %CONFIG% --input "C:\app\App2.exe" --output "C:\app\App2_obf.exe"
echo 所有文件混淆加密完成!
pause
总结
通过命令行方式使用恒盾C#混淆加密大师,可以方便快捷地将加密混淆过程集成到现有开发流程中,实现自动化操作,提高工作效率,同时有效保护C#程序的知识产权和核心算法安全。