大模型应用
逆向 .NET/C# 托管程序时:识别 CLR、脱混淆…
当目标是 .NET assembly(含 NativeAOT #识别)、C# 编译产物、红队 Sharp* 工具或 .NET 混淆程序时,用 dnSpyEx + de4dot 做脱壳、静态/动态分析与 IL patch。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
逆向 .NET/C# 托管程序时:识别 通用
解决思路
- 先用 DIE/`file`/CLR 头确认目标是 .NET 托管程序(PE 头 Data Directory[14] CLR Runtime Header 非零、导入 mscoree.dll / `_CorExeMain` 入口、存在 `#~`/`#Strings`/`#US`/`#GUID`/`#Blob` metadata 流、含 mscorlib / System.Private.CoreLib 字符串);若不是托管程序则切换到 ida-reverse/ 或 reverse-engineering/。
- 若疑似混淆,先用 `de4dot target.exe -o target-clean.exe` 脱壳产出 clean 样本,并保留原始样本做对照;自动识别失败时用 `de4dot --type cfze`(ConfuserEx)或 `de4dot --type sa`(SmartAssembly),或先 `de4dot --detect target.exe` 查看识别结果,必要时先 patch anti-tamper 再脱壳。
- 用 dnSpyEx(或 dnSpy MCP / `ilspycmd`)做静态分析:C# 视图快速浏览类结构、方法签名与字符串用于定位,关键判断、加密逻辑、状态机必须切到 IL 视图查看。
- 定位入口与关键逻辑:找 `Main` / `Startup` / 模块初始化器(Module .cctor),搜索 `flag`、`password`、`verify`、`check`、`encrypt`、`http`、`Config` 等关键字,再由字符串反向引用定位使用它的方法。
- 需要明文/C2 时用 dnSpyEx 调试器做动态调试:附加进程或启动调试,在关键方法下断点,观察运行时解密后的明文字符串、C2 地址与配置解密结果,以及异常驱动的控制流(anti-debug 常用 try/catch 隐藏真实路径)。
- 需要改逻辑时优先做 IL patch:dnSpyEx 右键方法 → Edit Method (C#) 或 Edit IL,改判断(ldc.i4.0 → ldc.i4.1)、改常量、nop 掉校验段,然后 File → Save Module 替换原文件;IL patch 可靠性高于 C# 重编译。
- 环境里若注册了 dnSpy MCP(`dnspy_*` 工具),优先走 MCP 面做 decompile / IL inspection,避免来回切 GUI。
- 用 dnlib 写 C# 脚本批量改 metadata 或提取字符串解密器;用 ILSpy(`ilspycmd`)做轻量 CLI / headless 批量反编译。
- 所有产物(脱混淆 clean 样本、提取的配置/C2/key、patch diff)都要落盘,保证可复现。
- 阶段结束给用户 3–6 项下一步菜单(含导出报告)。
适用边界 · 注意事项
- 目标是纯 native 二进制(C/C++/Go/Rust 编译、无 CLR)时,应改用 reverse-engineering/、ida-reverse/ 或 radare2/。
- IL2CPP 编译的 Unity 游戏或 NativeAOT 产物是 native,不走 dnSpy,应走 reverse-engineering/。
- 需要符号/函数批量迁移到别的版本时用 binary-diff/,需要画攻击路径/调用链图时用 diagram-generator/。