用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/AeonDave/malskill --skill dnspy命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | dnspy |
| description | Auth/lab ref:NET assembly decompiler, debugger, and editor for reverse engineering managed binaries. |
| license | MIT |
| compatibility | Windows; NET Framework/.NET Core. |
| metadata | {"author":"AeonDave","version":"1.1"} |
.NET decompiler + debugger + editor — the primary tool for reversing managed (.NET) binaries.
# dnSpyEx (actively maintained fork)
# Download from https://github.com/dnSpyEx/dnSpy/releases
# Extract and run dnSpy.exe (no installation needed)
# Alternative CLI decompiler (cross-platform)
dotnet tool install --global ilspycmd
Note: The original dnSpy by 0xd4d is archived. Use dnSpyEx — the active community fork.
.exe or .dll (.NET assembly)Main()| Panel | Purpose |
|---|---|
| Assembly Explorer | Tree view of loaded assemblies, namespaces, types |
| Decompiler | C#/VB.NET/IL decompiled source |
| Output | Debug output and log messages |
| Locals / Watch | Variable inspection during debugging |
| Call Stack | Stack trace during debugging |
| Breakpoints | Manage all breakpoints |
| Modules | Loaded assemblies/modules in debugged process |
| Key | Action |
|---|---|
Ctrl+Shift+K | Search assemblies (types, methods, strings) |
Ctrl+G | Go to token/offset |
F12 | Go to definition |
Ctrl+Shift+F | Find all references |
Ctrl+D | Go to metadata token |
F5 | Start/continue debugging |
F9 | Toggle breakpoint |
F10 | Step over |
F11 | Step into |
Shift+F11 | Step out |
Before opening in dnSpy, verify the sample is .NET:
# Check for CLI header in PE
python -c "
import struct, sys
data = open(sys.argv[1], 'rb').read()
lfanew = struct.unpack_from('<I', data, 0x3c)[0]
opt = lfanew + 4 + 20
magic = struct.unpack_from('<H', data, opt)[0]
dd_off = opt + (112 if magic == 0x10b else 128) # data dir 14 = COM descriptor
rva = struct.unpack_from('<I', data, dd_off)[0]
print('.NET' if rva else 'Native')
" sample.exe
# Detect obfuscator
de4dot --detect sample.exe
Common obfuscators: ConfuserEx, .NET Reactor, SmartAssembly, Dotfuscator, Babel, Eazfuscator
# de4dot: .NET deobfuscator (supports most common protections)
de4dot sample.exe -o sample_clean.exe
# For specific obfuscator:
de4dot --un-name "!^[a-zA-Z]{1,2}$" sample.exe -o sample_clean.exe
Main)Main through initializationSearch targets (Ctrl+Shift+K):
WebClient, HttpClient, WebRequest — network communicationProcess.Start, ProcessStartInfo — command executionAssembly.Load, Assembly.LoadFrom — dynamic code loadingGetManifestResourceStream — embedded resource extractionCryptoStream, AesManaged, RijndaelManaged — encryptionConvert.FromBase64String — base64 decodingRegistry, RegistryKey — persistence via registryDllImport, Marshal.GetDelegateForFunctionPointer — P/Invoke to nativeThread, Timer, Task.Run — async/background execution# Patch a method:
1. Right-click method → Edit Method (C#)
2. Modify code (e.g., add Console.WriteLine for tracing)
3. Compile (Ctrl+Shift+P)
4. File → Save Module → save patched assembly
# Patch IL directly:
1. Right-click method → Edit IL Instructions
2. Modify opcodes
3. OK → Save Module
# Common patterns for embedded configs:
1. Hardcoded strings in static fields → visible in decompiler
2. Base64 in static constructor (.cctor) → decode with Convert.FromBase64String
3. Encrypted resource → GetManifestResourceStream + AES/XOR decrypt
4. Settings class → Properties.Settings or custom config class
5. Embedded JSON/XML in resources → check Resources node in Assembly Explorer
Focus areas:
Credentials or Passwords class — browser credential theftCrypto or Wallet class — cryptocurrency wallet targetingFileGrabber — file exfiltration rulesSystemInfo — fingerprinting methodsGate or Panel or Config — C2 URL and build configFocus areas:
Settings class — C2 IP/port, mutex, install path, encryption keyConnection or Client class — C2 protocol implementationPlugin or Commands namespace — available capabilitiesInstall method — persistence mechanismAntiVM or AntiDebug — evasion checksFocus areas:
Main → resource extraction → Assembly.Load (in-memory stage 2)WebClient.DownloadData → Assembly.Load (download + execute)RunPE or Inject method — process hollowing/injection| File | When to load |
|---|---|
| references/deobfuscation.md | Deobfuscation strategies per obfuscator family |
| references/dotnet-malware-patterns.md | Common .NET malware family patterns and IOC locations |