惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
WordPress大学
WordPress大学
S
Schneier on Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
AWS News Blog
AWS News Blog
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
NISL@THU
NISL@THU
T
Tor Project blog
L
Lohrmann on Cybersecurity
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
G
GRAHAM CLULEY
博客园_首页
K
Kaspersky official blog
GbyAI
GbyAI
P
Privacy & Cybersecurity Law Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
AI
AI
爱范儿
爱范儿
Cloudbric
Cloudbric
MongoDB | Blog
MongoDB | Blog
Martin Fowler
Martin Fowler
aimingoo的专栏
aimingoo的专栏
I
InfoQ
腾讯CDC
O
OpenAI News
F
Full Disclosure
P
Privacy International News Feed
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Webroot Blog
Webroot Blog
Forbes - Security
Forbes - Security
MyScale Blog
MyScale Blog
L
LangChain Blog
H
Help Net Security
C
CERT Recently Published Vulnerability Notes
C
Cisco Blogs
人人都是产品经理
人人都是产品经理
S
Security @ Cisco Blogs
T
Tenable Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
博客园 - 三生石上(FineUI控件)
Attack and Defense Labs
Attack and Defense Labs
Apple Machine Learning Research
Apple Machine Learning Research

博客园 - China Soft

试官问:你用 AI 编程半年了,那怎么保证 Claude Code 写出来的代码是对的? C#实现控制台多区域输出 园友特惠| 1Panel 企业版 & AI 一体机限量放售,最高直降 5100! 上位机程序发布打包成安装包---Inno Setup 这是一篇学习笔记,分享给大家,如果大家喜欢,也会开启USB的专辑 我问了 AI 一个问题:编码能力贬值后,什么能力值钱? Visual Studio 2026(VS2026) 密钥/激活码 Dddify:给 ASP.NET Core 项目一套轻量、清晰、可落地的 DDD 基础设施 C# ESP32/STM32 轻量 Web 能力库:PicoServer.Nano 高性能百度OCR ONNX Runtime C#实现 别再说 AI 开发就是调接口了!5 种主流模式一次讲清 使用Cursor实现管理系统登录界面的快速开发 在 Avalonia 中编写高性能动画 傻子可懂的 Harness Engineering 入门教程 + 项目实战,一次搞懂 AI 编程工程化! 提升 Text2SQL 准确率 AI/Vibe Coding,本质是软件人工时代向软件工业时代发展 体验优先:十分钟使用 Python+LangChain 玩转阿里通义千问 大模型基础(二):必懂5大基础概念《Token、上下文窗口、Embedding、预训练、微调》 大模型基础(一):什么是LLM? Prompt、Agent、Function Call、Skill、MCP,傻傻分不清楚? 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 作为一线研发,我快被全网的 AI 焦虑逼疯了。 Qt QtWebEngine 白屏的解决方案 都是微软亲儿子,WPF凭啥干不掉WinForm?这3个场景说明白了 .NET 高级开发 | C# 中的动态代码:反射、EMIT、表达式树、Roslyn、Source Generators 大模型看大模型:推理Token的能耗用电量比对 WorkBuddy:从“我是谁”到“帮我干活” .NET 高级开发 | 开发 .NET 诊断工具、链路追踪原理 Prompt 焚诀——一个模板,终结你和 AI 的所有沟通问题 [项目]涉案资产信息化管理平台(山东某执法单位定制开发) 大模型RAG实战,从被骂不靠谱到成为部门MVP,这是我的踩坑全记录 白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值 从Prompt工程到Skill工程:Agent Skills开放标准彻底改变了AI协作方式 MAUI项目在Android平台通过U盘实现软件更新 微软竟然出了免费的 AI 应用开发课?!我已经学上了 一文彻底搞懂 OpenClaw 的架构设计与运行原理(万字图文) AI到底聪明在哪——从手机人脸识别说起 硬核科普:为何小米任天堂封杀 Root?揭秘操作系统从启动到“夺权”的底层游戏
.NET 程序保护实战系列01-流水线架构与保护引擎总览
China Soft · 2026-07-08 · via 博客园 - China Soft

https://www.cnblogs.com/gsyifan/p/21161614

.NET 程序保护实战系列01-流水线架构与保护引擎总览

.NET 程序保护实战系列

本系列文章基于 TWSoft.AssemblyProtector 保护引擎,系统讲解 .NET 程序集的防护技术,从流水线架构到每一层保护的实现原理。


文章列表

#标题核心内容
01 流水线架构与保护引擎总览 三阶段流水线、ProtectOptions、多模块编排
02 字符串加密:让反编译器的搜索功能失效 Ldstr HOOK、XOR 块加密、xorshift32、不可见 Unicode
03 符号混淆:名称就是第一道防线 VTable 感知重命名、跨模块同步、6 种命名模式
04 控制流混淆:打乱逻辑让分析者绕路 基本块拆分、JumpMangler、不透明谓词
05 代码虚拟化:把 IL 变成只有你能懂的字节码 自定义 VM、栈式解释器、Token 名称反射
06 方法体加密:密钥在手才能执行的代码 DynamicMethod 解密、ILGenerator 重建 IL
07 JIT Hook 保护:在编译时刻解密 clrjit.dll Hook、Trampoline、哨兵 IL
08 防篡改校验:任何修改都会触发自毁 FNV-1a 方法体哈希、Environment.FailFast
09 反调试与反转储:让调试器无处下手 IsDebuggerPresent、PE 头归零、元数据销毁
10 资源加密:把 DLL 藏进保险箱 SPN 三阶段加密、xorshift128、AssemblyResolve
11 类型注入:无 DLL 依赖的运行时交付 InjectHelper 深度克隆、框架外观程序集重定向
12 授权保护集成:从保护到变现的闭环 验证器编译、入口点注入、多点验证、HMAC 签名

适用读者

  • .NET 开发者,了解 IL 基本指令
  • 安全研究员,对逆向工程有兴趣
  • 商业软件开发者,需要保护知识产权

技术栈

  • dnlib — .NET 程序集读写库
  • CIL — 通用中间语言指令
  • C# Expression Trees / ILGenerator — 运行时代码生成

本系列文章由 TWSoft.AssemblyProtector 保护引擎驱动。工具在全部完成后部分开源,欢迎在 GitHub 关注。文章内容仅供技术学习,请勿用于非法用途。

01 · 流水线架构与保护引擎总览

目录

  1. 为什么要保护 .NET 程序?
  2. 保护引擎的核心设计理念
  3. 三阶段流水线架构
  4. 保护步骤注册与执行顺序
  5. ProtectOptions:一个配置控制所有层
  6. ProtectionContext:步骤间的共享数据总线
  7. ProtectionSession:多模块协同保护
  8. AssemblyProtectorService:顶层编排器
  9. 从命令行到 GUI:三种使用入口
  10. 结语

1. 为什么要保护 .NET 程序?

.NET 程序编译为 IL(中间语言),附带完整的元数据——类名、方法签名、字段类型一览无余。使用 dnSpy、ILSpy 等工具可以几乎完整还原源代码。对于商业软件,这意味着核心算法暴露、授权验证逻辑可被绕过、通信协议和 API 密钥泄露。

我们的保护引擎提供了 全链条防护——从字符串加密到方法体加密、从反调试到代码虚拟化,层层设防。


2. 保护引擎的核心设计理念

2.1 无独立 DLL 依赖

所有运行时助手类型在保护时通过 InjectHelper 深度克隆到目标程序集中。用户分发的受保护程序是完全自包含的,没有任何额外的 .dll 文件。

2.2 共享上下文

多个保护步骤共享 ProtectionContext,其中包含模块引用、随机数生成器、运行时类型服务、注入的用户类型等。这确保了步骤之间可以无缝协作。

2.3 基于 dnlib

使用 dnlib 库读写 .NET 程序集。dnlib 是 Mono.Cecil 的替代品,在 ConfuserEx 等知名保护工具中广泛使用。


3. 三阶段流水线架构

每个保护步骤实现 IProtectionStep 接口,包含三个可选方法:

public interface IProtectionStep
{
    string Name { get; }                                    

三阶段执行流程

// 阶段1:Inject(注入运行时)— 所有启用步骤先集体执行
foreach (var ctx in contexts)
{
    foreach (var step in steps.Where(s => s.IsEnabled(ctx.Options)))
        step.Inject(ctx);
}

为什么要分三个阶段? 因为 Order 靠前的步骤注入的运行时类型,可以被 Order 靠后的步骤保护。例如授权验证器(Order=5 注入)在后续的字符串加密(Order=10)和防篡改(Order=60)中会被自动保护。


4. 保护步骤注册与执行顺序

ProtectionPipeline 构造函数中注册了全部 10 个保护步骤:

public ProtectionPipeline()
{
    _steps = new List<IProtectionStep>
    {
        new LicenseInjectionStep(),      

每个步骤通过 IsEnabled(opts) 决定是否启用:

// 字符串加密:由 EncryptStrings 开关控制
public bool IsEnabled(ProtectOptions options) => options.EncryptStrings;


5. ProtectOptions:一个配置控制所有层

ProtectOptions 是所有保护步骤的控制中心:

public class ProtectOptions
{
    // === 字符串加密 ===
    public bool EncryptStrings { get; set; }        

6. ProtectionContext:步骤间的共享数据总线

public class ProtectionContext
{
    public required ModuleDefMD Module { get; init; }       

7. ProtectionSession:多模块协同保护

public class ProtectionSession
{
    public IList<ProtectionContext> Contexts { get; }    

8. AssemblyProtectorService:顶层编排器

public class AssemblyProtectorService
{
    private IList<ProtectResult> ProtectMultipleCore(
        List<string> inputs, string outputDir, ProtectOptions options)
    {
        

9. 从命令行到 GUI:三种使用入口

入口类型技术适用场景
TWProtector.CLI 命令行 .NET 10 Console CI/CD 自动化
TWProtector (GUI) 桌面 Avalonia 12 跨平台可视化
TWProtector (WPF) 桌面 WPF Windows 原生体验

命令行示例:

TWProtector.CLI --input MyApp.exe --output ./protected \
    --preset all --encrypt-strings --obfuscate \
    --license --online --api-url http://server:5159 \
    --software-key YOUR_KEY

10. 结语

本文概述了保护引擎的流水线架构。后续文章将逐层深入每一类保护的具体实现。下一篇将详细讲解字符串加密——这是最基础但最有效的第一道防线。