{"adoption": {"forks": 260, "observed_at": "2026-08-28T04:06:33.237207+00:00", "stars": 2272}, "canonical_url": "https://ross.abutalabs.com/products/androidreverse", "card": {"archived": false, "artifact_type": "learning-resource", "description": "《安卓逆向这档事》", "domain": ["android-tools", "security", "tutorials", "reverse-engineering"], "enriched": true, "function": ["reverse-engineering", "security", "developer-tools"], "health_score": 48, "homepage": null, "language": "JavaScript", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["ZJ595/AndroidReverse"], "name": "ZJ595/AndroidReverse", "platform": ["cross-platform"], "pushed_at": "2025-10-09T04:37:52+00:00", "repo": "ZJ595/AndroidReverse", "stars": 2272, "tags": ["android-reverse-engineering", "tutorial-series", "xposed", "smali", "frida", "apk-modification", "chinese-language", "android"], "topics": [], "urls": [], "use_cases": ["learn android reverse engineering from scratch", "how to hook android apps with xposed", "understand smali and apk file structure", "bypass signature verification in android apps", "dynamic debugging android apps with jeb", "analyze native android libraries with ida"], "what_it_is": "A Chinese-language tutorial series ('安卓逆向这档事') on Android reverse engineering, covering APK structure, smali, dynamic debugging, Xposed hooking, and native analysis with IDA. It includes written articles plus companion videos on Bilibili.", "when_to_avoid": ["you need official documentation or a maintained software tool rather than a course", "you cannot read Chinese and machine translation is not acceptable", "you need content with a clear open-source license for redistribution"], "when_to_choose": ["you want a structured, beginner-friendly path into Android reverse engineering", "you prefer tutorials paired with video walkthroughs", "you want practical lessons on hooking, debugging, and APK modification"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/androidreverse", "repo": "ZJ595/AndroidReverse", "role": "main", "score": 48}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "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:06:33.237207+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:33.237207+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:41:42.058017+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1d65648d67897bd38fb80c9cd057ccdcfcefd51618b1e2ffdd7b7bbd2c82de49", "fetched_at": "2026-08-28T04:06:33.237207+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ZJ595/AndroidReverse"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 46, "longevity": 76, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1066, "days_push": 328, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 48, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}