
Android에서 Flutter APK에 대한 오프라인 보안 감사를 수행합니다. 권한, SDK, 엔드포인트 및 잠재적 시크릿을 검사합니다. 루트, 계정, 광고 또는 분석이 필요하지 않습니다.
Flutter 앱을 위한 온디바이스 보안 감사 — 루트 불필요, PC 불필요, 네트워크 불필요.
설치된 Flutter 앱을 검사하거나 APK 파일을 선택하세요. 아티팩트 인벤토리, 매니페스트 위험, 내장된 엔드포인트, 잠재적 시크릿, 그리고 증거 기반 A–F 보고서를 얻을 수 있습니다. 정적 발견 사항은 조사할 단서일 뿐, 취약점의 증거가 아닙니다.
APK 다운로드 · Google Play (출시 시) · 개인정보 처리방침
Flutter 앱은 로직을 libapp.so에 숨기고, 디버그 빌드에서는 100 MB짜리 Dart 커널을 포함하며,
API 키를 에셋, resources.arsc, 네이티브 브리지 라이브러리에 묻어둡니다. 흔한 조언인
"이 툴체인으로 데스크톱에서 디컴파일하라"는 방법은 느리고, 난독화된 AOT
스냅샷에서는 실패하며, 일치하는 Dart SDK가 필요합니다.
FlutterGuard는 휴대폰에서 작동하는 부분을 담당합니다. OS가 이미 노출하는 APK를 읽고,
중요한 포맷(바이너리 XML, resources.arsc, DEX 문자열, libapp.so 문자열
풀, kernel_blob.bin, NOTICES.Z, env 파일, X.509 블롭)을 파싱하여
증거와 함께 보고서를 생성합니다 — 모두 오프라인으로, 루트 없이, 가로채기 없이.
이 도구는 반복 실행되도록 설계되었습니다. 모든 스캔은 타임스탬프가 찍혀 보관되므로, 두 번째 스캔은 같은 앱의 두 버전 사이에서 무엇이 바뀌었는지 알려줍니다. 바로 그 차이에서 진짜 발견 사항이 나옵니다.
| 앱 인벤토리 | 보고서 등급 | 발견 사항 |
|---|---|---|
![]() | ![]() | ![]() |
| 서비스 및 SDK | 설정 | 개인정보 |
|---|---|---|
![]() | ![]() | ![]() |
스토어 에셋 및 등록 문구 · 앱 아이콘 · 피처 그래픽
이미지를 선택하면 전체 크기 스토어 미리보기를 볼 수 있습니다.
아티팩트 — 패키지, 버전, SDK 범위, ABI, 크기, 분할 수, 베이스 APK 해시, 크기와 SHA-256 접두사를 포함한 모든 네이티브 라이브러리, 설치 프로그램, 서명 방식(v1/v2/v3/v4), 서명자 DN 및 인증서 지문, 디버그 인증서 감지.
Flutter 특화 정보 — 정말 Flutter인지, AOT인지 디버그(JIT 커널)인지, kernel_blob.bin 크기,
JIT 스냅샷 존재 여부, Dart 엔진 버전, 난독화 상태, NOTICES.Z와 package: URI에서 복구한
Dart 패키지 인벤토리, 그리고 데스크톱 후속 작업에 넘길 수 있는 지문
(Blutter/reFlutter는 정확한 엔진 빌드가 필요합니다).
매니페스트 위험 — 권한, 익스포트된 액티비티/서비스/리시버/프로바이더, 디버거블, 백업, 평문 정책, 네트워크 보안 구성(base-config 대 domain-config, 루프백 전용 평문, 사용자 CA 신뢰, 핀 세트, 디버그 오버라이드), 스킴별로 집계된 딥 링크.
시크릿 및 엔드포인트 — API 키(Google, AWS, Stripe, Supabase, Sentry, Firebase, OpenAI,
GitHub, Slack, Sendgrid, Telegram), OAuth 클라이언트 ID, JWT 유사 블롭, 인라인 자격 증명이 포함된
DB/브로커 URI, 실제 본문이 있는 개인 키 블록, 내장된 X.509 인증서(덤프가 분할될 때 PEM
본문 줄에서 조립됨), Dart --dart-define 이름, 그리고 자격 증명 개수가 포함된 .env/.env.prod 파일.
엔드포인트 — 소스 전반의 호스트를 first-party / staging / internal / saas:X /
ip-literal로 분류하며, YAML/TOML 서비스 구성의 엔드포인트 목록(uri: btc-electrum.example:50002
형식), Dart 스냅샷의 API 라우트, 복구된 소스 경로, WebView 위험 플래그,
app / plugin / standard로 구분된 MethodChannel 인벤토리.
네이티브 표면 — flutter_rust_bridge 및 기타 FFI 브리지, JNI Java_* 진입점 개수.
서드파티 및 AI 표면 — SDK 지문 테이블은 약 135개 서비스를 다루며, 각각은
zip 경로, DEX 디스크립터, pub 패키지 또는 호스트로 매칭됩니다. Firebase, Play Services, 결제,
광고, 어트리뷰션부터 인증(Auth0, Clerk, Appwrite, Stytch, WorkOS), 실시간(Agora, LiveKit,
Stream, Sendbird), 결제(Stripe, RevenueCat, PayPal, Paddle), 백엔드(PocketBase, Nhost,
Supabase) 및 벡터 스토어에 이르기까지 모두 포함합니다. 대규모 언어 모델 제공자는 개별적으로
인벤토리화됩니다 —
OpenAI, Anthropic, Gemini, Groq, Mistral, Cohere, DeepSeek, OpenRouter, Together, Fireworks,
Perplexity, xAI, HuggingFace, Replicate, Bedrock, DashScope, Moonshot, GLM, MiniMax, ElevenLabs,
Stability — 그리고 localhost:11434(Ollama)와 localhost:1234
(LM Studio) 및 ComfyUI의 :8188로 신호되는 온디바이스 런타임도 포함됩니다. 같은 단계에서 앱이
포함하는 광고, 분석, 크래시 SDK의 이름을 밝히는데, 이는 보통 보고서에서 가장 놀라운 부분입니다.
SDK 마커 파일 및 번들 구성 — 루트 수준의 billing.properties,
play-services-*.properties, transport-*.properties 및 firebase-encoders*.properties는
DEX를 파싱하지 않고도 어떤 SDK를 증명하는지 명시합니다. 번들된 .env/.json/.yaml/.properties/.sqlite 및
키 자료는 구성 표면으로 나열되며, 번들된 HTML/JS 페이지는 WebView 페이로드로 보고되어
JS 브리지로 렌더링된 로컬 페이지가 암시되는 것이 아니라 가시화됩니다.
APK에 여전히 pubspec.yaml이 있을 때의 정확한 버전 — 일부 릴리스 빌드는
프로젝트 자체의 의존성 매니페스트를 유지하므로, 복구된 후보 대신 실제 이름 및 제약 조건을
얻을 수 있습니다. 이것이 없을 때는 NOTICES.Z와 package: URI에서 얻은 후보 목록이 사용됩니다.
FlutterGuard-<version>.apk를 다운로드하고, Android가 프롬프트를 표시하면 브라우저 또는
파일 관리자에서 설치를 허용하세요.Android 8.0+ (API 26). Play Services가 필요하지 않습니다. Play는 Google의 키로 서명된 빌드를 제공하며, 이는 GitHub APK 서명자와 다릅니다. 이들 사이를 전환하려면 기존 앱을 제거해야 합니다. 보관하려는 보고서를 먼저 내보내세요: 앱을 제거하면 앱의 비공개 보고서, 기록 및 설정이 삭제됩니다. 내보내기는 앱 내 기록을 복원하지 않습니다.
FlutterGuard에는 INTERNET 권한이 없습니다. 패키지 가시성은 설치된 앱 감사를 지원하며,
포그라운드 서비스 권한은 로컬 스캔을 지원하고, 알림은 스캔 진행 상황을 표시합니다.
계정, 광고, 분석은 없습니다. 보고서를 공유하거나 외부 링크를 여는 것은 다른 앱을 통한
명시적 작업입니다.