api-testing
Activate this skill whenever the user mentions API endpoint, REST API, RESTful, GraphQL, GraphQL introspection, GraphQL mutation, gRPC, gRPC reflection,…
Activate this skill when the user mentions ".NET", "CLR", "managed code", "C# binary", "C# decompile", "decompile C#", "VB.NET", "F# binary", "ILSpy", "dnSpy", "de4dot", "dotPeek", ".NET Reflector", "monodis", "ilspycmd", "ilasm", "ildasm", "Cecil", "Mono.Cecil", "dnlib", ".NET
$ npx -y skills add ogrodev/fsociety --skill dotnet-reversing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dotnet-reversingContext preview
The summary Claude sees to decide when to auto-load this skill.
Activate this skill when the user mentions ".NET", "CLR", "managed code", "C# binary", "C# decompile", "decompile C#", "VB.NET", "F# binary", "ILSpy", "dnSpy", "de4dot", "dotPeek", ".NET Reflector", "monodis", "ilspycmd", "ilasm", "ildasm", "Cecil", "Mono.Cecil", "dnlib", ".NET
name: dotnet-reversing description: | Activate this skill when the user mentions ".NET", "CLR", "managed code", "C# binary", "C# decompile", "decompile C#", "VB.NET", "F# binary", "ILSpy", "dnSpy", "de4dot", "dotPeek", ".NET Reflector", "monodis", "ilspycmd", "ilasm", "ildasm", "Cecil", "Mono.Cecil", "dnlib", ".NET Reactor", "ConfuserEx", "Dotfuscator", "SmartAssembly", "Eazfuscator", "Babel obfuscator", "Crypto Obfuscator", "Agile.NET", "Themida .NET", "deobfuscate", "deobfuscation", ".NET obfuscation", "unpack .NET", "mscoree", "mscorlib", "System.Reflection", "System.Runtime", "assembly metadata", "IL code", "MSIL", "CIL", "OpCodes", "Common Language Runtime", "CLR hosting", "JIT compilation", "NuGet", "Mono", ".NET assembly", ".NET executable", "managed executable", ".NET malware", "C# malware", "C# RAT", "C# loader", "C# dropper", "C# stager", "C# implant", "C# beacon", "C# payload", "BinaryFormatter", "ObjectStateFormatter", "ViewState deserialization", "JSON.NET TypeNameHandling", "DataContractSerializer", ".NET serialization", "ysoserial.net", "TypeConfuseDelegate", "P/Invoke", "DllImport", "Marshal", "unsafe code", "fixed pointer", ".NET patching", "IL patching", "Harmony", "runtime hooking", "Assembly.Load", "AppDomain", "Reflection.Emit", ".NET config extraction", "C2 extraction", "beacon config", "Costura.Fody", "ILMerge", "embedded assembly", ".NET RE", ".NET reverse engineering", "managed binary analysis", or discusses analyzing, decompiling, deobfuscating, patching, or exploiting .NET assemblies. version: 2.0.0
.NET binaries ship IL (Intermediate Language) code with full metadata — type names, method signatures, string literals, inheritance hierarchies. This makes decompilation far more effective than with native code. A clean .NET binary decompiles to near-source-quality C#. Obfuscation raises the bar but never eliminates the metadata entirely because the CLR needs it to execute.
This matters for offensive work: .NET malware leaks intent through its metadata. Even heavily obfuscated samples expose type references to `System.Net.Sockets`, `System.Security.Cryptography`, or `System.Runtime.InteropServices` — revealing capability before you touch the IL.
Confirm a binary is .NET before choosing your toolchain. Wrong tools waste time.
# Quick check — file magic file <binary> # Look for: "Mono/.Net assembly" or "PE32 executable ... Mono/.Net" # Confirm via PE imports — .NET binaries import mscoree.dll r2 -qc 'ii~mscoree' <binary> # _CorExeMain = .NET EXE, _CorDllMain = .NET DLL # CLI header presence — Data Directory entry 14 r2 -qc 'iH~CLR' <binary> # monodis sanity check monodis --assembly <binary>
If the binary is mixed-mode (C++/CLI), it has both native and managed code. Use `monodis` for the managed portion and radare2/Ghidra for native.
Follow this sequence for any .NET target. Skip steps that do not apply, but never skip triage.
Goal: understand what you have before deep analysis.
# Assembly identity monodis --assembly <binary> # Type inventory — namespaces reveal purpose monodis --typedef <binary> # External dependencies — what frameworks/libraries does it use? monodis --assemblyref <binary> monodis --typeref <binary> # Entry point identification monodis --method <binary> | grep -A5 "\.entrypoint" # Embedded resources — configs, encrypted payloads, embedded DLLs monodis --manifest <binary> # String extraction — URLs, IPs, registry keys, crypto constants strings -el <binary> # Unicode strings (common in .NET) strings -a <binary> # ASCII strings floss <binary> # FLARE obfuscated string solver
Key questions to answer during triage:
Determine if and how the binary is obfuscated. This dictates your next steps.
# de4dot auto-detection (does not modify — just reports) de4dot --detect <binary> # Manual checks monodis --typedef <binary> # Garbled names = obfuscation monodis --customattr <binary> # Obfuscator watermark attributes
**Obfuscator Fingerprints:**
| Obfuscator | Indicators | |------------|------------| | **ConfuserEx** | Unicode-garbled names, `ConfuserEx` in attributes, proxy delegates, `<Module>.cctor()` initialization | | **Dotfuscator** | `DotfuscatorAttribute`, PreEmptive watermarks, renamed but structurally intact | | **.NET Reactor** | `.reacto` section, `__EncryptedAssembly__` resource, native stub loader | | **SmartAssembly** | `SmartAssembly.Attributes`, `{SmartAssembly}` strings, embedded error reporting | | **Eazfuscator** | `EazAttribute`, virtualized method bodies, custom opcode interpreter | | **Babel** | `BabelAttribute`, `BabelObfuscator` strings, resource encryption | | **Crypto Obfuscator** | `CryptoObfuscator` strings, heavy resource encryption | | **Agile.NET** | `CliSecure` references, native mode option | | **Themida/.NET** | Themida-style VM wrapping managed code, very heavy | | **Costura.Fody** | Not obfuscation — embeds DLL dependencies as resources. `costura.` prefixed resources |
If obfuscated → Phase 2a (deobfuscate first). If clean → skip to Phase 3.
# Automatic deobfuscation de4dot <binary> -o <clean.exe> # ConfuserEx specifically (use the cex fork) de4dot-cex <binary> -o <clean.exe> # Force a specific deobfuscator engine de4dot <binary> -p <code> -o <clean.exe> # Codes: an=Agile.NET, ba=Babel, co=CryptoObfuscator, cx=ConfuserEx, # df=Dotfuscator, dr=.NETReactor
Multi-plugin marketplace for Claude Code offensive security plugins
Repo: ogrodev/fsociety
Activate this skill whenever the user mentions API endpoint, REST API, RESTful, GraphQL, GraphQL introspection, GraphQL mutation, gRPC, gRPC reflection,…
Activate this skill whenever the user mentions cloud lateral movement, cloud privilege escalation, cloud post-exploitation, cloud red team, multi-cloud attack,…
Activate this skill whenever the user mentions port scan, port scanning, nmap, nmap scan, masscan, rustscan, service detection, service enumeration, service…
This skill should be used when the user mentions "brute force", "password cracking", "hydra", "hashcat", "john the ripper", "credential stuffing", "password…
This skill should be used when the user mentions "payment", "payment gateway", "checkout", "IDOR payment", "payment bypass", "Stripe", "MercadoPago", "Binance…