{"adoption": {"forks": 622, "observed_at": "2026-08-28T04:07:45.995741+00:00", "stars": 3146}, "canonical_url": "https://ross.abutalabs.com/products/dynamorio", "card": {"archived": false, "artifact_type": "framework", "description": "Dynamic Instrumentation Tool Platform", "domain": ["developer-tools", "performance", "security", "operating-systems"], "enriched": true, "function": ["benchmarking", "fuzzing", "reverse-engineering", "simulation", "tracing"], "health_score": 100, "homepage": null, "language": "C", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["DynamoRIO/dynamorio"], "name": "DynamoRIO/dynamorio", "platform": ["windows", "cpp", "c"], "pushed_at": "2026-08-26T22:29:51+00:00", "repo": "DynamoRIO/dynamorio", "stars": 3146, "tags": ["dynamic-binary-instrumentation", "binary-analysis", "code-coverage", "cache-simulator", "memory-debugging", "runtime-code-manipulation", "instrumentation", "linux", "android"], "topics": ["dynamorio", "instrumentation", "linux", "windows", "profiling", "analysis-framework", "toolkit", "cache-simulator", "simulator", "binary-analysis"], "urls": [], "use_cases": ["instrument a program at runtime for profiling", "fuzz Windows binaries with code coverage feedback", "simulate CPU caches and TLBs from instruction traces", "trace memory addresses and function calls of an application", "detect memory errors in unmodified binaries", "analyze opcode mixes and reuse distances of a workload"], "what_it_is": "DynamoRIO is a runtime code manipulation system that supports arbitrary code transformations on executing programs, with a powerful instruction manipulation library for IA-32, AMD64, ARM, and AArch64. It serves as a platform for building dynamic tools such as profilers, fuzzers, memory debuggers, and cache simulators on unmodified applications.", "when_to_avoid": ["you only need simple static analysis of binaries", "you want source-level instrumentation rather than binary-level", "you need macOS support, which is still in progress", "you need a lightweight sampling profiler without deep instrumentation"], "when_to_choose": ["you need fine-grained dynamic binary instrumentation on x86, ARM, or AArch64", "you want to build custom program analysis or profiling tools", "you need to instrument unmodified applications on Windows, Linux, or Android", "you need an instrumentation engine for a fuzzer like WinAFL"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/dynamorio", "repo": "DynamoRIO/dynamorio", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:45.995741+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:25:57.131823+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "007f1a2569a05899155041b935f29d5e0af633b339bea45406bef6c4a4ffb9de", "fetched_at": "2026-08-28T04:07:45.995741+00:00", "kind": "readme", "missing": false, "url": "https://github.com/DynamoRIO/dynamorio"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4297, "days_push": 7, "days_rel": 11, "gap_med": 6, "n_releases_24m": 108}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}