跳到主要内容

命令行工具使用指南

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

注册成功后,注册信息将保存在系统中,后续混淆操作将自动使用已注册的授权。

命令行集成优势

  1. 自动化部署:可以轻松集成到CI/CD流程中,实现代码编译后的自动混淆
  2. 批量处理:通过脚本可以批量处理多个程序集
  3. 无人值守:配置完成后可以在后台自动执行,无需人工干预
  4. 可重复性:确保每次混淆过程使用相同的配置参数

常见问题

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#程序的知识产权和核心算法安全。