{"adoption": {"forks": 293, "observed_at": "2026-08-28T04:07:16.379471+00:00", "stars": 2738}, "canonical_url": "https://ross.abutalabs.com/products/reflutter", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Flutter Reverse Engineering Framework", "domain": ["security", "penetration-testing", "reverse-engineering", "mobile-development"], "enriched": true, "function": ["reverse-engineering", "security", "penetration-testing", "cli"], "health_score": 97, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["Impact-I/reFlutter"], "name": "Impact-I/reFlutter", "platform": ["windows", "python", "cross-platform"], "pushed_at": "2026-08-11T22:22:43+00:00", "repo": "Impact-I/reFlutter", "stars": 2738, "tags": ["flutter", "ssl-pinning-bypass", "traffic-interception", "burp-suite", "apk-repacking", "ipa-repacking", "dynamic-analysis", "dart-snapshot", "bugbounty", "mobile-security", "linux", "macos", "android", "ios"], "topics": ["bugbounty", "mobile-security", "reverse-engineering", "ssl-pinning"], "urls": [], "use_cases": ["intercept https traffic from a flutter app with burp suite", "bypass ssl certificate pinning in a flutter mobile app", "reverse engineer an apk built with flutter", "perform dynamic analysis of a dart snapshot in a mobile app", "security test a flutter app during a bug bounty", "patch a flutter ipa for traffic monitoring on ios"], "what_it_is": "reFlutter is a Python CLI framework for reverse engineering Flutter mobile apps by repacking APK/IPA files with a specially patched, precompiled Flutter engine. The patched library enables Burp Suite traffic interception, bypasses many certificate-pinning implementations, and exposes Dart classes, functions, and code offsets for dynamic analysis without root access or certificate installation.", "when_to_avoid": ["the target app is a native Android/iOS app not built with Flutter", "you need a general-purpose disassembler or static reverse engineering suite rather than Flutter-specific dynamic analysis", "you cannot repack and re-sign the target APK/IPA, for example due to unworkable integrity protections"], "when_to_choose": ["you are pentesting or bug-bounty hunting a Flutter-based Android or iOS app", "you need traffic interception or pinning bypass without root or installing CA certificates on the device", "you want to enumerate Dart classes, functions, and code offsets from a compiled Flutter snapshot"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reflutter", "repo": "Impact-I/reFlutter", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "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:16.379471+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:16.379471+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T08:19:12.722090+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "fbc16072212560aa06cae100f8d378783f07fefad99e01a88730c2fe8ca5711b", "fetched_at": "2026-08-28T04:07:16.379471+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Impact-I/reFlutter"}, {"content_hash": "52ca0e272e01b3c6b25a20d7d4bad3f698738cdae185847ba29e49174ebb7941", "fetched_at": "2026-08-29T09:57:25.107756+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/reflutter/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 100, "rhythm": 89}, "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": 1603, "days_push": 22, "days_rel": 79, "gap_med": 0, "n_releases_24m": 36}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}