使用命令行加密混淆C#程序

C#作为托管语言编译生成的IL中间代码极易被反编译工具还原源码。据统计,超过83%的商业软件曾遭遇过代码逆向风险,导致核心算法泄露、授权被跳过. 因此对于C#语言开发的程序来说, 在发布前进行混淆和加密非常有必要.

本文主要介绍如何使用恒盾C#混淆加密大师1.3.0版本, 通过命令行的方式, 对C#进行混淆加密, 可以方便的集成到自己的程序发布流程中, 无需手动操作软件进行加密.

如果您不像通过命令行进行处理C#程序, 只想了解如何通过软件界面进行操作, 可以查看我们之前的文章:
恒盾C#混淆加密卫士 - 混淆加密保护C#程序_恒盾c#混淆加密大师-CSDN博客

使用命令行混淆加密C#程序快速流程


  1. 首先下载安装恒盾C#混淆加密卫士最新版本, 可以通过下面的CSDN文库链接免积分下载

【免费】恒盾C#混淆加密大师1.3.0-支持命令行C#混淆加密资源-CSDN文库

  1. 下载安装完成后, 我们打开软件, 选择想要加密的C# 程序, 并选择想要的混淆选项
  1. 在软件界面右上角, 选择文件->导出配置, 把导出的配置文件存放到的你的电脑中, 例如配置文件可以被导出到这个路径: C:\app\config.csop
  1. 在软件安装目录, 可以找到CLI.exe文件, 该文件就是命令行处理C#的命令行程序, 例如CLI.exe文件位于 C:\app\CSharpObfuscator1.3.0\CLI.exe
  1. 此时我们便可以通过命令行直接进行混淆加密处理了, 打开系统中的cmd程序, 输入下面的命令行
bash 复制代码
C:\app\CSharpObfuscator1.3.0\CLI.exe --config C:\app\config.csop

混淆处理信息如下:

  1. 处理完成后, 混淆加密的程序会被存放在相应的位置

混淆配置文件详细说明


混淆配置文件config.csop是一个jsonc文件, 内部有详细的注释和介绍, 你可以根据需求进行修改, 一个完整的配置文件如下:

javascript 复制代码
{
    // 需要加密的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"
}

配置文件的字段, 和软件界面里的配置一致, 你可以通过配置true或者false启用或者关闭某一个混淆选项:

如果您不太会写配置文件, 可以直接在软件内选择好想要的配置, 然后在软件右上角菜单里面选择 文件 -> 导出配置, 让程序帮您自动生成配置文件.

以上便是关于使用命令行对C#程序进行加密混淆的介绍, 如果有问题可以留言反馈

相关推荐
我真的不会C5 分钟前
QT窗口相关控件及其属性
开发语言·qt
CodeCraft Studio5 分钟前
Excel处理控件Aspose.Cells教程:使用 Python 在 Excel 中进行数据验
开发语言·python·excel
火柴盒zhang11 分钟前
websheet之 编辑器
开发语言·前端·javascript·编辑器·spreadsheet·websheet
景天科技苑18 分钟前
【Rust】Rust中的枚举与模式匹配,原理解析与应用实战
开发语言·后端·rust·match·enum·枚举与模式匹配·rust枚举与模式匹配
阿让啊24 分钟前
C语言中操作字节的某一位
c语言·开发语言·数据结构·单片机·算法
椰羊~王小美29 分钟前
LeetCode -- Flora -- edit 2025-04-25
java·开发语言
孞㐑¥1 小时前
C++11介绍
开发语言·c++·经验分享·笔记
旦莫1 小时前
Python 教程:我们可以给 Python 文件起中文名吗?
开发语言·python
꧁坚持很酷꧂2 小时前
配置Ubuntu18.04中的Qt Creator为中文(图文详解)
开发语言·qt·ubuntu
不当菜虚困2 小时前
JAVA设计模式——(四)门面模式
java·开发语言·设计模式