offensive-tools/rev/dnspy/SKILL.md
Auth/lab ref:NET assembly decompiler, debugger, and editor for reverse engineering managed binaries.
npx skillsauth add aeondave/malskill dnspyInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
.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 |
development
White-box auditing methodology for AI-generated ('vibe-coded') applications. Focuses on modern stack misconfigurations (Supabase, Next.js, Vercel).
development
Hybrid AI/Deterministic SAST methodology for discovering zero-day vulnerabilities in source code. Orchestrates structural search with AI-driven data flow and sink validation.
development
Auth assessment: hardware/embedded methodology; UART/JTAG/SWD/SPI/I2C, firmware extraction, boot/debug paths, embedded OS evidence.
devops
Container methodology: Identifying containerization limits, Docker/K8s misconfigurations, and executing escapes to the host node.