Skip to content
luckyboxx edited this page May 12, 2026 · 6 revisions

VenomHook Wiki

VenomHook은 네이티브 바이너리와 Android APK를 정적 분석해 후킹 후보 함수와 보안 결함을 찾고, offset 기반 HookSpec, 자동 PoC 레시피, 가독성 있는 HTML 보고서를 생성하는 CLI 도구입니다.

Binary/APK -> StaticMeta -> Endpoint scoring -> HookSpec -> Frida script -> Runtime report

Android 흐름은 **단일 명령 venomhook scan-apk**로 다음을 한 번에 수행합니다.

  • Manifest 감사 (10 룰: debuggable / cleartext / NSC / user-cert trust / exported / providers / 위험 권한 / SDK)
  • 2-tier 코드 감사
    • Java tier — jadx 결과 위에서 6 룰
    • Smali tier — apktool smali 위에서 4 룰 (jadx 타임아웃 / 실패에도 결함 산출 보장)
  • 딥링크 / 데이터 스킴 / intent-filter 구조 추출, JNI bridge correlation (multi-.so 지원), .so 문자열 8 카테고리 분류
  • adb · Frida · mitmproxy · logcat PoC 자동 생성, MASVS 카테고리로 그룹화된 자체 포함 HTML 보고서
  • 결과 정규화 — 동일 클래스 내 같은 룰 발화는 occurrences로 압축, 동일 템플릿 PoC는 applies_to로 압축 (KakaoTalk-급 APK에서 PoC −91%)
  • 10단계 라이브 진행 출력 — 모든 단계를 stderr에 [N/10] 형식으로 표시

README는 첫 실행에 집중하고, 상세한 사용법과 운영 흐름은 이 Wiki에서 다룹니다.

문서 바로가기

페이지 언제 보나요
Environment Checklist 처음 실행 전 반드시 확인할 최소 환경 점검
Installation Python, Ghidra, Frida, apktool, jadx, optional extras 설정
Core Workflow 네이티브 바이너리 StaticMeta -> HookSpec -> Frida 흐름
Android Workflow APK .so 추출, manifest 분석, Java native/JNI bridge 분석, 코드 레벨 감사
Manifest Audit and PoC scan-apk (= android-audit), severity gate, HTML report, manifest + java/smali 코드 룰, native string hints, 실행 가능한 PoC bundle
LLM Layer opt-in LLM 태깅, proto 추론, flow 설명, runtime 요약, signature recovery
Developer API CLI가 아니라 Python API로 직접 조합할 때
Configuration and Project Layout profile, generated output, ignored local input, 프로젝트 구조
Development and Architecture 테스트와 아키텍처 문서

오류가 발생한 뒤 원인을 찾을 때는 Troubleshooting Reference를 확인하세요.

최소 실행

python3 -m venv venv
source venv/bin/activate
pip install -e .

venomhook offset-e2e \
  --static-json ./sample/examples/static_meta.sample.json \
  --target sample.exe \
  --out-dir ./out

이 명령은 Ghidra, Frida, Android 도구, 실제 실행 대상 없이 HookSpec JSON/SQLite, Markdown 요약, Frida 스크립트를 생성합니다.

운영 메모

  • 실제 바이너리와 APK는 권한이 있는 대상만 분석하세요.
  • 대용량 바이너리와 APK는 Git에 올리지 않고 로컬 ignored path에서만 사용합니다.
  • 구조도는 저장소의 ARCHITECTURE.md에 유지합니다.

Clone this wiki locally