Indexing .NET Applications
Recover structure — and, in the extension build, behaviour — from compiled .NET assemblies whose source may be lost.
Compiled-binary recovery is an extension, not part of the open-source ekos binary. It ships as a separately licensed build (RFC 0148, RFC 0150) that plugs into the public extension seam (Plugin Architecture). The public build still reads, queries and serves a ledger that such a build wrote, and documents the configuration schema.
What the extension recovers
| Level | What | Notes |
|---|---|---|
| Structure | types, methods, signatures, fields, the call graph, branch structure, string/numeric constants, external I/O boundaries | read in-process from CLI metadata; no .NET SDK needed |
| Statements (RFC 0150) | per-method if / loop / switch / try structure, each line carrying its IL offset |
labelled with the fidelity actually reached: structural, control_flow or statements |
| Migration aids | a per-method specification, a Python-rewrite parity check, sandboxed characterization tests that run the original and compare the rewrite |
Recovery is honest about gaps: obfuscated or packed binaries are detected and flagged, and unresolved regions are reported as such rather than filled by guessing.
Using it
Structural recovery is deterministic and needs no LLM. The optional [binary-reconstruction] table controls a separate, opt-in LLM stage that drafts business-rule descriptions from recovered slices — one slice is one type and one LLM call, so max-slices is a declared cost ceiling:
[binary-reconstruction]
enabled = false # default: no LLM is ever contacted about a binary
max-slices = 50
min-confidence = 0.5
include-compiler-generated = false
Run the extension's own ekos build through the normal pipeline (build → recover → … → commit). Then, from any MCP client on the resulting ledger:
ekos_binary_explain— what a type or method does, with IL offsets;ekos_binary_migration_check— compare a Python rewrite against the original.
For the concept and the honest scope, read RFC 0148 and RFC 0150.