{"adoption": {"forks": 154, "observed_at": "2026-09-01T02:13:58.164869+00:00", "stars": 1117}, "canonical_url": "https://ross.abutalabs.com/products/asmresolver", "card": {"archived": false, "artifact_type": "library", "description": "A library for creating, reading and editing PE files and .NET modules.", "domain": ["reverse-engineering", "security", "developer-tools", "files"], "enriched": true, "function": ["parser", "serialization", "reverse-engineering", "developer-tools"], "health_score": 100, "homepage": "https://docs.washi.dev/asmresolver/", "language": "C#", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Washi1337/AsmResolver"], "name": "Washi1337/AsmResolver", "platform": ["cross-platform", "windows", "dotnet"], "pushed_at": "2026-08-29T16:49:18+00:00", "repo": "Washi1337/AsmResolver", "stars": 1117, "tags": ["pe-files", "dotnet-metadata", "cil", "malware-analysis", "binary-patching", "pdb-symbols", "linux", "macos"], "topics": ["disassembler", "dotnet", "reader", "writer", "cil", "il", "msil", "portable-executable", "pe", "reverse-engineering", "assembler", "malware-analysis", "parser"], "urls": [], "use_cases": ["parse and inspect PE file headers and sections", "edit or patch .NET assemblies programmatically", "reconstruct import address tables in binaries", "analyze obfuscated or malformed .NET modules", "read PDB and Portable PDB symbol files", "build tools for malware analysis of Windows executables", "clone or import .NET metadata between assemblies"], "what_it_is": "AsmResolver is a .NET library for reading, modifying, and writing Portable Executable (PE) files, including those with .NET metadata. It provides high-level object models for PE structures, .NET modules, method bodies, and PDB symbols while remaining robust against malformed or obfuscated binaries.", "when_to_avoid": ["you only need to run or decompile .NET assemblies rather than edit them", "you need disassembly of arbitrary native machine code beyond PE structure handling", "you work outside the .NET ecosystem and cannot use .NET libraries"], "when_to_choose": ["you need a fully managed, cross-platform API for PE and .NET binary manipulation", "you are building reverse-engineering, deobfuscation, or malware-analysis tooling in .NET", "you need fine-grained control over PE file layout and low-level structures", "you want to read PDB symbols without native dependencies like DIA"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/asmresolver", "repo": "Washi1337/AsmResolver", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-09-01T02:13:58.164869+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:41:56.819933+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4ef5f7ccdbc9a889f71762988b7f2d57b4ae1d87471bf10c980280fe4b07fd10", "fetched_at": "2026-09-01T02:13:58.164869+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Washi1337/AsmResolver"}, {"content_hash": "2cf3eae5934d241b19fc7d44c2029f33d8322485bf54f720edc3ed184ee0534b", "fetched_at": "2026-08-29T12:45:38.273583+00:00", "kind": "homepage", "missing": false, "url": "https://docs.washi.dev/asmresolver/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 100, "longevity": 100, "rhythm": 83}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4942, "days_push": 4, "days_rel": 39, "gap_med": 69, "n_releases_24m": 2}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 5, "stale_scrape": false}}