How n7on/dllspy works
DllSpy inspects compiled .NET assemblies without running them, discovering input surfaces and evaluating their authorization configuration for security issues. Users can start the scan through either the CLI or PowerShell: both invoke the shared scanner, which dispatches framework-specific discovery and produces an assembly report. The CLI filters and formats results; PowerShell emits surfaces or issues as objects. The README documents eight supported surface types, represented here as separate discovery branches. Some internal wiring is based on the scanner’s documented dispatch structure; unsampled details are left out.
Main entry points: AssemblyScanner.cs Assembly scanner · Program.cs CLI · SearchDllSpyCommand.cs Search cmdlet · TestDllSpyCommand.cs Test cmdlet
Components 21
User interfaces
- CLI
src/DllSpy.Cli/Program.cs - Search cmdlet
src/DllSpy.PowerShell/Commands/SearchDllSpyCommand.cs - Test cmdlet
src/DllSpy.PowerShell/Commands/TestDllSpyCommand.cs
Assembly scanning
- Scanner factory
src/DllSpy.Core/Services/ScannerFactory.cs - Assembly scanner
src/DllSpy.Core/Services/AssemblyScanner.cs - Reflection helpers
src/DllSpy.Core/Helpers/ReflectionHelper.cs
Surface discovery
- HTTP discovery
src/DllSpy.Core/Services/HttpEndpointDiscovery.cs - SignalR discovery
src/DllSpy.Core/Services/SignalRDiscovery.cs - WCF discovery
src/DllSpy.Core/Services/WcfDiscovery.cs - gRPC discovery
src/DllSpy.Core/Services/GrpcDiscovery.cs - Razor discovery
src/DllSpy.Core/Services/RazorPageDiscovery.cs - Blazor discovery
src/DllSpy.Core/Services/BlazorDiscovery.cs - Azure Functions
src/DllSpy.Core/Services/AzureFunctionDiscovery.cs - OData discovery
src/DllSpy.Core/Services/ODataDiscovery.cs
Security analysis
- Attribute analysis
src/DllSpy.Core/Services/AttributeAnalyzer.cs - Security resolver
src/DllSpy.Core/Services/SecurityResolver.cs
Reports and output
- Assembly report
src/DllSpy.Core/Contracts/AssemblyReport.cs - CLI output
src/DllSpy.Cli/OutputWriter.cs - PowerShell objects
src/DllSpy.PowerShell/Commands/SpyCmdletBase.cs
Other components
- User
- .NET assembly
Connections 27
- User → CLI: invokes
- User → Search cmdlet: invokes
- User → Test cmdlet: invokes
- .NET assembly → Assembly scanner: scanned by
- CLI → Scanner factory: creates scanner
- Search cmdlet → Scanner factory: creates scanner
- Test cmdlet → Scanner factory: creates scanner
- Scanner factory → Assembly scanner: creates
- CLI → Assembly scanner: scans assembly
- Search cmdlet → Assembly scanner: scans assembly
- Test cmdlet → Assembly scanner: scans assembly
- Assembly scanner → HTTP discovery: dispatches discovery
- Assembly scanner → SignalR discovery: dispatches discovery
- Assembly scanner → WCF discovery: dispatches discovery
- Assembly scanner → gRPC discovery: dispatches discovery
- Assembly scanner → Razor discovery: dispatches discovery
- Assembly scanner → Blazor discovery: dispatches discovery
- Assembly scanner → Azure Functions: dispatches discovery
- Assembly scanner → OData discovery: dispatches discovery
- HTTP discovery → Reflection helpers: loads types
- HTTP discovery → Attribute analysis: reads attributes
- HTTP discovery → Security resolver: resolves authorization
- Assembly scanner → Assembly report: builds report
- Assembly scanner → Attribute analysis: analyzes issues
- CLI → CLI output: prints results
- Search cmdlet → PowerShell objects: emits surfaces
- Test cmdlet → PowerShell objects: emits issues