{"adoption": {"forks": 400, "observed_at": "2026-08-28T04:07:01.385568+00:00", "stars": 2570}, "canonical_url": "https://ross.abutalabs.com/products/bhook", "card": {"archived": false, "artifact_type": "library", "description": "通用的Android PLT hook库，支持armeabi-v7a，arm64-v8a，x86，x86_64", "domain": ["android-tools", "developer-tools", "mobile-development"], "enriched": true, "function": ["security", "reverse-engineering", "developer-tools"], "health_score": 92, "homepage": "https://github.com/bytedance/bhook/tree/main/doc#readme", "language": "C", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["bytedance/bhook"], "name": "bytedance/bhook", "platform": ["cpp", "c"], "pushed_at": "2026-06-16T06:47:41+00:00", "repo": "bytedance/bhook", "stars": 2570, "tags": ["plt-hook", "got-hook", "ndk", "native-hooking", "hooking", "android-native", "android"], "topics": ["android", "hook", "plthook", "plt", "gothook", "got", "native", "ndk", "hooking", "bytedance", "androidplthook", "androidgothook", "androidhook"], "urls": [], "use_cases": ["hook native functions in Android dynamic libraries", "intercept libc calls in an Android app at runtime", "monitor or replace native library function calls on Android", "patch native behavior without modifying library source", "debug native crashes with backtrace unwinding in proxy functions", "hook all or selected .so libraries in an Android process"], "what_it_is": "ByteHook is a production-grade Android PLT hook library written in C, supporting armeabi-v7a, arm64-v8a, x86, and x86_64. It lets native code intercept calls to functions in dynamic libraries via GOT/PLT hooking, with automatic handling of recursive calls and newly loaded libraries.", "when_to_avoid": ["you need inline hooking of arbitrary code addresses - use ByteDance's shadowhook instead", "you target platforms other than Android", "you need Java-level method hooking rather than native PLT hooking"], "when_to_choose": ["you need stable, production-ready PLT/GOT hooking on Android 4.1+", "you need multi-architecture support including x86 and x86_64", "you want automatic hooking of newly loaded dynamic libraries", "you need to hook the same function from multiple callers safely"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/bhook", "repo": "bytedance/bhook", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "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:01.385568+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:01.385568+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:23:18.993575+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "07ea22050fe625dd30b6a50d9f7656881933a5be3b36b520d64fb49e8b753389", "fetched_at": "2026-08-28T04:07:01.385568+00:00", "kind": "readme", "missing": false, "url": "https://github.com/bytedance/bhook"}, {"content_hash": "661462ebea01065bfe11f03cbc05a1eddc52fc54350573e2bfbb778fe50cf030", "fetched_at": "2026-08-29T10:05:36.326098+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/bytedance/bhook/tree/main/doc#readme"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 87, "longevity": 100, "rhythm": 57}, "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": 1848, "days_push": 78, "days_rel": 78, "gap_med": 293.5, "n_releases_24m": 3}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}