{"adoption": {"forks": 795, "observed_at": "2026-08-28T04:09:34.792029+00:00", "stars": 6075}, "canonical_url": "https://ross.abutalabs.com/products/qiling", "card": {"archived": false, "artifact_type": "framework", "description": "A True Instrumentable Binary Emulation Framework", "domain": ["security", "reverse-engineering", "embedded-systems", "operating-systems"], "enriched": true, "function": ["simulation", "reverse-engineering", "security"], "health_score": 94, "homepage": "https://qiling.io", "language": "Python", "license": "GPL-2.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["qilingframework/qiling"], "name": "qilingframework/qiling", "platform": ["python", "cross-platform", "windows"], "pushed_at": "2026-07-22T14:09:44+00:00", "repo": "qilingframework/qiling", "stars": 6075, "tags": ["binary-emulation", "malware-analysis", "unicorn-engine", "sandbox", "firmware-emulation", "instrumentation", "uefi", "debugging", "linux", "macos"], "topics": ["binary", "emulator", "framework", "unicorn-emulator", "malware", "analysis", "qiling", "reverse-engineering", "cross-architecture", "uefi", "unicorn-engine"], "urls": [], "use_cases": ["emulate malware samples in a sandbox for analysis", "reverse engineer binaries across different CPU architectures", "emulate IoT firmware for security research", "hook syscalls and instructions during binary execution", "analyze Windows drivers and kernel rootkits", "debug cross-platform and cross-architecture binaries", "hot patch running code during emulation"], "what_it_is": "Qiling is a Python-based binary emulation framework built on Unicorn Engine that emulates executables across multiple platforms (Windows, macOS, Linux, BSD, UEFI, DOS) and architectures (x86, ARM, MIPS, RISC-V, PowerPC). It provides fine-grained instrumentation hooks, a configurable sandbox, and OS-level APIs for building custom security analysis tools.", "when_to_avoid": ["you only need fast full-system virtualization to run software, not analysis (use QEMU/KVM)", "you need a GUI disassembler rather than a programmable framework", "you require a permissive license for proprietary products (GPL-2.0)"], "when_to_choose": ["you need instrumentable, scriptable binary emulation in Python", "analyzing malware or firmware in an isolated sandbox", "you need multi-architecture and multi-OS emulation support", "building custom security analysis tooling on top of an emulator"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/qiling", "repo": "qilingframework/qiling", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "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:09:34.792029+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:34.792029+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:48:21.768633+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "7bb7fcd66555bb64a6c5c0c51d4d04b3c7c01aaf9d571fb70ccdf8d79dbf8273", "fetched_at": "2026-08-28T04:09:34.792029+00:00", "kind": "readme", "missing": false, "url": "https://github.com/qilingframework/qiling"}, {"content_hash": "155ef4d575038ff6df9782ca18c51c35f0f93ea7eed872f217f9e66a7e43aa5a", "fetched_at": "2026-08-29T08:46:06.785726+00:00", "kind": "homepage", "missing": false, "url": "https://qiling.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 49}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2568, "days_push": 42, "days_rel": 127, "gap_med": 416, "n_releases_24m": 2}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}