{"id":48367233,"url":"https://github.com/trackd/ispy","last_synced_at":"2026-04-05T15:03:21.968Z","repository":{"id":338245153,"uuid":"1149034994","full_name":"trackd/ISpy","owner":"trackd","description":"A PowerShell module for decompiling .NET assemblies using the ILSpy decompiler engine.","archived":false,"fork":false,"pushed_at":"2026-02-13T14:05:11.000Z","size":84,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-13T22:52:17.650Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/trackd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-03T16:43:52.000Z","updated_at":"2026-02-13T14:05:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/trackd/ISpy","commit_stats":null,"previous_names":["trackd/ispy"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/trackd/ISpy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackd%2FISpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackd%2FISpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackd%2FISpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackd%2FISpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/trackd","download_url":"https://codeload.github.com/trackd/ISpy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/trackd%2FISpy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31439444,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-05T15:03:04.742Z","updated_at":"2026-04-05T15:03:21.932Z","avatar_url":"https://github.com/trackd.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISpy\r\n\r\nA PowerShell module for decompiling .NET assemblies using the ILSpy decompiler engine.  \r\n\r\n## Overview\r\n\r\nISpy module provides comprehensive cmdlets to decompile .NET assemblies into readable C# source code. Built on top of the ICSharpCode.Decompiler library (the engine behind ILSpy), it offers a powerful command-line interface for .NET assembly analysis and decompilation tasks.  \r\n\r\n### Key Features\r\n\r\n- **Complete Assembly Decompilation**: Decompile entire .NET assemblies to organized C# source code\r\n- **Targeted Type Analysis**: Focus on specific types, methods, or namespaces  \r\n- **Cross-Platform Support**: Works with .NET Framework, .NET Core, and .NET 5+ assemblies\r\n- **Flexible Output Options**: Console output, single files, or organized directory structures\r\n- **Advanced Search Capabilities**: Find types and methods across multiple assemblies\r\n- **Pipeline Integration**: Full PowerShell pipeline support for batch operations\r\n- **Dependency Analysis**: Analyze assembly dependencies and relationships\r\n- **Syntax highlighting**: PowerShell Module [TextMate](https://github.com/trackd/TextMate), pipe `Expand-Type` output to `Format-TextMate`\r\n\r\n## Installation\r\n\r\n```powershell\r\nInstall-Module ISpy\r\n```\r\n\r\n### Prerequisites\r\n\r\n- **PowerShell**: 7.4\r\n\r\n### Building from Source\r\n\r\n1. Clone this repository\r\n2. Open a terminal in the project directory\r\n3. Build the project:\r\n\r\n```powershell\r\n\u0026 .\\build.ps1\r\n```\r\n\r\n1. Import the module:\r\n\r\n```powershell\r\nImport-Module .\\output\\ISpy.psd1\r\n```\r\n\r\n## Cmdlets\r\n\r\nThis module exposes the following cmdlets for assembly analysis and decompilation:\r\n\r\n| Cmdlet | Purpose |\r\n| -------- | --------- |\r\n| [Expand-Type](docs/en-us/Expand-Type.md) | Decompile specific methods or show type source (interactive) |\r\n| [Export-DecompiledSource](docs/en-us/Export-DecompiledSource.md) | Export decompiled types to files with namespace organization |\r\n| [Get-AssemblyInfo](docs/en-us/Get-AssemblyInfo.md) | Assembly metadata and information |\r\n| [Get-DecompiledSource](docs/en-us/Get-DecompiledSource.md) | Decompile types (returns an object per type) |\r\n| [Get-Dependency](docs/en-us/Get-Dependency.md) | Assembly dependency mapping |\r\n| [Get-Type](docs/en-us/Get-Type.md) | List and filter types within assemblies |\r\n| [New-Decompiler](docs/en-us/New-Decompiler.md) | Create configured `CSharpDecompiler` instances |\r\n| [New-DecompilerSetting](docs/en-us/New-DecompilerSetting.md) | Creates a configurable `DecompilerSettings` |\r\n| [New-DecompilerFormattingOption](docs/en-us/New-DecompilerFormattingOption.md) | Creates a configurable `CSharpFormattingOptions` |\r\n\r\n## Examples\r\n\r\n### Quick Start: list a few types\r\n\r\n```powershell\r\nGet-Type -Path (Join-Path $PSHOME 'System.Console.dll')\r\n```\r\n\r\n### Find types by name pattern\r\n\r\n```powershell\r\nGet-Type -Path (Join-Path $PSHOME 'System.Console.dll') -NamePattern \"*Console*\" \r\n```\r\n\r\n### Show assembly metadata\r\n\r\n```powershell\r\nGet-AssemblyInfo -Path (Join-Path $PSHOME 'System.Console.dll')\r\n```\r\n\r\n### Show external dependencies\r\n\r\n```powershell\r\nGet-Dependency -Path (Join-Path $PSHOME 'System.Console.dll') -ExternalOnly\r\n```\r\n\r\n### Preview one type's decompiled source object\r\n\r\n```powershell\r\nGet-DecompiledSource -Path (Join-Path $PSHOME 'System.Console.dll') | Select-Object -First 1\r\n```\r\n\r\n### Expand just one method (small, focused output)\r\n\r\n```powershell\r\nExpand-Type -Path (Join-Path $PSHOME 'System.Console.dll') -TypeName 'System.Console' -MethodName 'WriteLine' | Select-Object -First 3\r\n```\r\n\r\n### Custom decompilersettings / formatting\r\n\r\n```powershell\r\n# custom decompiler + settings + formatting\r\n$formatSplat = @{\r\n    ClassBraceStyle = 'NextLine'\r\n    IndentationString = '  '\r\n    MethodBraceStyle = 'NextLine'\r\n    NewLineAferIndexerOpenBracket = 'NewLine'\r\n    ChainedMethodCallWrapping = 'WrapAlways'\r\n}\r\n$decompilersettingsplat = @{\r\n    AlwaysUseBraces = $true\r\n    CSharpFormattingOptions = New-DecompilerFormattingOption @formatSplat\r\n}\r\n$decompilerSplat = @{ \r\n    Path = Join-Path $PSHOME 'System.Console.dll' \r\n    DecompilerSettings = New-DecompilerSetting @decompilersettingsplat\r\n}\r\n$decompiler = New-Decompiler @decompilerSplat\r\nExpand-Type -Decompiler $decompiler -TypeName 'System.Console' -MethodName 'Write'\r\n```\r\n\r\n```powershell\r\n# settings + formatting\r\n$formatSplat = @{\r\n    # Stroustrup-ish formatting\r\n    ClassBraceStyle               = 'EndOfLine'\r\n    IndentationString             = '  '\r\n    MethodBraceStyle              = 'EndOfLine'\r\n    NewLineAferIndexerOpenBracket = 'NewLine'\r\n    StatementBraceStyle           = 'EndOfLine'\r\n    ChainedMethodCallWrapping     = 'WrapAlways'\r\n    InterfaceBraceStyle           = 'EndOfLine'\r\n    StructBraceStyle              = 'EndOfLine'\r\n    EnumBraceStyle                = 'EndOfLine'\r\n    ConstructorBraceStyle         = 'EndOfLine'\r\n}\r\n$options = @{\r\n    FileScopedNamespaces    = $true\r\n    AlwaysUseBraces         = $true\r\n    CSharpFormattingOptions = New-DecompilerFormattingOption @formatSplat\r\n}\r\n$Settings = New-DecompilerSetting @options\r\nExpand-Type -Settings $Settings -TypeName 'System.Console' -MethodName 'Write'\r\n```\r\n\r\nsee  `docs/en-us/` for more examples.\r\n\r\n## Development\r\n\r\n### Project Structure\r\n\r\n```text\r\nISpy/\r\n├── src/                    # Source code\r\n│   ├── Cmdlets/            # PowerShell cmdlet implementations\r\n│   ├── Models/             # Data transfer objects\r\n│   └── Utilities/          # Helper classes\r\n├── tests/                  # Pester test suite\r\n├── docs/en-us/             # PowerShell help documentation\r\n├── output/                 # Built module package\r\n└── build.ps1               # Build script\r\n```\r\n\r\n## Dependencies\r\n\r\n- **ICSharpCode.Decompiler**: Core decompilation engine from [ILSpy](https://github.com/icsharpcode/ILSpy)\r\n\r\n## Contributing\r\n\r\n1. Fork the repository\r\n2. Create a feature branch\r\n3. Add tests for new functionality\r\n4. Update documentation as needed\r\n5. Submit a pull request\r\n\r\n## License\r\n\r\nThis project follows the same license terms as the ISpy project it's based on.  \r\n\r\n## Libraries\r\n\r\n- [ILSpy](https://github.com/icsharpcode/ILSpy) - The original .NET decompiler GUI application\r\n- [ICSharpCode.Decompiler](https://www.nuget.org/packages/ICSharpCode.Decompiler/) - The decompiler engine NuGet package\r\n\r\n---\r\n\r\n**Note**: This module is designed for legitimate reverse engineering, learning, and analysis purposes. Please respect intellectual property rights and licensing terms when decompiling third-party assemblies.\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrackd%2Fispy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrackd%2Fispy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrackd%2Fispy/lists"}