Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dslsdzc/rev-skills --skill re-dotnetgit clone --depth 1 https://github.com/dslsdzc/rev-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/dslsdzc/rev-skills/re-dotnet)<a href="https://agentmods.dev/skills/dslsdzc/rev-skills/re-dotnet"><img src="https://agentmods.dev/badge/skills/dslsdzc/rev-skills/re-dotnet/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dslsdzc/rev-skills/re-dotnet"><img src="https://agentmods.dev/badge/skills/dslsdzc/rev-skills/re-dotnet.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00056 | $0.03416 |
| Opus 5 | $0.00028 | $0.01708 |
| Sonnet 5 | $0.00011 | $0.00683 |
| Haiku 4.5 | $0.00006 | $0.00342 |
Grade A, and why
re-dotnet scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 130 lines — stays where its author put it; the contents beside it link to each section on GitHub.
.NET CIL 逆向(dnSpy / ILSpy / de4dot)
何时使用 / 何时不用
- 用:确认是 .NET 程序集(PE CLI header /
file输出 "Mono/.Net assembly")后,还原 CIL 为可读 C#;处理 ConfuserEx/SmartAssembly 等 .NET 混淆;定位注册码/网络/解密逻辑 - 用:恶意 .NET 样本([[re-malware]] → [[re-managed]] 路径)的静态还原
- 不用:非托管 PE(native 程序直接 [[re-binary-core]];混合模式程序 native 部分同样转出)
- 不用:Java([[re-java]])、脚本([[re-script-deob]])
- 注意:动态步骤默认沙箱([[platform-tips]] 最高原则);先
file/初勘确认再动手
工具准备
参考 [[platform-tips]]——反编译/去混淆为静态步骤,免沙箱;动态验证按最高原则进沙箱。
dotnet SDK(跑 .NET 工具的前提)
- Debian/Ubuntu:
apt install dotnet-sdk-8.0(官方 Microsoft 源) - Fedora:
dnf install dotnet-sdk-8.0;Arch:pacman -S dotnet-sdk - macOS:
brew install --cask dotnet-sdk - Windows:
choco install dotnet-sdk或官方安装器 - 验证:
dotnet --version
ILSpy(跨平台,GUI + CLI)
- CLI(dotnet tool):
dotnet tool install -g ilspycmd - GUI: GitHub
icsharpcode/ILSpyrelease zip(linux-x64 / win-x64 / osx-x64 均有) - 验证:
ilspycmd --help;GUI 能打开程序集
dnSpy(Windows 专用,GitHub release)
- GitHub
dnSpyEx/dnSpyrelease zip → 解压运行dnSpy.exe - 仅 Windows(WinForms + .NET Framework);Linux/WSL 用 ILSpy(或 Wine 跑 dnSpy)
- 验证: GUI 启动并能
File > Open程序集 - 优势: 反编译 + 编辑 + 调试一体
de4dot(GitHub release,去混淆)
- GitHub
de4dot/de4dotreleasede4dot.exe;Linux/macOS 需 mono:apt install mono-devel/dnf install mono-devel;Arch:yay -S mono-git(AUR——mono 自 2021 年起不在官方仓库,AUR 亦无稳定mono包,仅mono-git);macOSbrew install mono- 运行:
mono de4dot.exe --help;Windows 直接de4dot.exe --help
- 验证:
--help正常输出
单文件 bundle 解包(sfextract / ILSpy 内置,可选但常用)
- 零额外工具: ILSpy 7.1+ GUI 直接
File > Open单文件 bundle,7.2+ 右键Extract package entry导出内嵌程序集 - CLI:
dotnet tool install -g sfextract(Droppers/SingleFileExtractor,MIT;注意dotnet-bundle-extractor/dotnet-bundle-extract这两个包名在 NuGet 并不存在) - 用法:
sfextract sample.exe -o extracted/(不带-o只列出 bundle 内文件) - 验证:
sfextract --help
操作步骤
按顺序执行,每步记录证据(路径 + sha256,见 [[re-triage]])。
- 识别 .NET 程序集:
CLI header 确认(PE 数据目录第 15 项 = COM Descriptor):file sample.exe # 含 "Mono/.Net assembly" 即 .NET strings sample.exe | grep -i mscoree # mscoree.dll 导入是经典标识
注意混合模式程序集(native + 托管都看得到)与自包含单文件(见坑 4)。 CLI header 结构速查(实测 .NET 10 产物):cb=0x48(72)、MajorRuntimeVersion=2、MinorRuntimeVersion=5、MetaData RVA、EntryPoint RVA(0=DLL)、CorFlags(1=ILONLY、2=32BITREQUIRED、0x8=强名签名(COMIMAGE_FLAGS_STRONGNAMESIGNED)、0x20000=32BITPREFERRED)。 元数据根(MetaData RVA 处):签名import pefile pe = pefile.PE('sample.exe') dd = pe.OPTIONAL_HEADER.DATA_DIRECTORY[14] # COM Descriptor (CLI header) print(hex(dd.VirtualAddress), hex(dd.Size)) # 非 0 → 托管程序集BSJB(0x424A5342) + 版本 1.1 + 保留 + 版本串长 + 版本串("v4.0.30319",.NET Framework/.NET Core/.NET 10 产物恒定)+ flags(2) + 流数(2) + 流头(offset + size + 名字,4 字节对齐)。 流名即内容形态:#~(压缩表,Roslyn 默认)/#-(未压缩表)、#Strings(元数据字符串池)、#US(用户字符串:代码里的 C# 字面量)、#GUID、#Blob(签名/常量 blob)——字符串加密样本的明文不在#US就是运行时拼的;#~的表内容即 dnSpy/ILSpy 的类型/方法树。
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 130 lines · 56 tokens per session scan A 8e1368dee35b
re-dotnet is a skill published in the GitHub repository dslsdzc/rev-skills (50 stars, last pushed 11d ago), licensed Apache-2.0. It adds 56 tokens to every session and 3,416 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
analyzing-golang-malware-with-ghidra
Reverse engineer Go-compiled malware in Ghidra by parsing Go buildinfo and pclntab structures, recovering stripped/obfuscated function names (e.g. via GoResolver), and extracting embedded module/dependency strings and types from Go binaries. Use when analyzing a Go-language malware sample, deobfuscating a…
analyzing-golang-malware-with-ghidra
Reverse engineer Go-compiled malware using Ghidra with specialized scripts for function recovery, string extraction, and type reconstruction in stripped Go binaries.
analyzing-golang-malware-with-ghidra
Reverse engineer Go-compiled malware using Ghidra with specialized scripts for function recovery, string extraction, and type reconstruction in stripped Go binaries.
analyzing-golang-malware-with-ghidra
Use when reverse engineer Go-compiled malware using Ghidra with specialized scripts for function recovery, string extraction, and type reconstruction in stripped Go binaries. Use when reverseing engineer go-compiled malware using ghidra with specialized scripts for.
analyzing-windows-prefetch-with-python
Parse Windows Prefetch (.pf) files with the windowsprefetch Python library to reconstruct application execution history, run counts, and accessed file/volume lists. Use when investigating renamed or masquerading binaries, verifying program execution timelines, or hunting for suspicious execution patterns in incident…
analyzing-golang-malware-with-ghidra
Reverse engineer Go-compiled malware using Ghidra with specialized scripts for function recovery, string extraction, and type reconstruction in stripped Go binaries.