Skip to content

Core Workflow

luckyboxx edited this page May 9, 2026 · 1 revision

Core Workflow

가장 단순한 경로는 offset-e2e입니다. StaticMeta를 HookSpec JSON/SQLite, Markdown 요약, Frida 스크립트까지 한 번에 변환합니다.

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

1. StaticMeta 생성

이미 StaticMeta JSON이 있으면 이 단계는 건너뛰어도 됩니다. 실제 바이너리를 Ghidra headless로 분석하려면:

analyzeHeadless ./static/project venomhook_project \
  -import ./path/to/target.exe \
  -overwrite \
  -scriptPath ./ghidra_scripts \
  -postScript export_staticmeta.py ./static/META/staticmeta.json

출력:

static/META/staticmeta.json

VenomHook에서 Ghidra-backed static path를 실행할 수도 있습니다.

venomhook offset-static \
  --binary ./path/to/target.exe \
  --ghidra-headless analyzeHeadless \
  --ghidra-script ./ghidra_scripts/export_staticmeta.py \
  --out ./reports/hook/venomhook.json

2. StaticMeta -> HookSpec

venomhook offset-static \
  --static-json ./static/META/staticmeta.json \
  --out ./reports/hook/venomhook.json \
  --out-db ./reports/hook/venomhook.db \
  --report-md ./reports/hook/venomhook.md \
  --top 20

주요 옵션:

Option Meaning
--top 상위 N개 후킹 후보 출력
--sig-max-bytes signature prefix 최대 byte 수
--score-network network import 가중치
--score-file file import 가중치
--score-auth auth keyword 가중치
--score-url URL/string 가중치
--score-crypto crypto import/string 가중치
--score-jni JNI/Android 가중치

3. HookSpec -> Frida Script

venomhook offset-hook \
  --hookspec ./reports/hook/venomhook.json \
  --target target.exe \
  --out-script ./frida_scripts/venomhook.js \
  --log-format json \
  --hexdump-len 64 \
  --string-arg 0 \
  --string-ret \
  --scan-size 4096 \
  --retry-attach 2

SQLite HookSpec도 사용할 수 있습니다.

venomhook offset-hook \
  --hookspec-db ./reports/hook/venomhook.db \
  --target target.exe \
  --out-script ./frida_scripts/venomhook.js

런타임 module 이름이 다를 수 있으면 alias를 추가합니다.

venomhook offset-hook \
  --hookspec ./reports/hook/venomhook.json \
  --target libfoo.so \
  --module-alias libfoo.so.1 \
  --module-alias libfoo.so.1.0 \
  --out-script ./frida_scripts/venomhook.js

4. Frida 실행

Frida CLI 직접 실행:

frida -f ./path/to/target.exe -l ./frida_scripts/venomhook.js --no-pause

VenomHook 오케스트레이터:

venomhook offset-run \
  --script ./frida_scripts/venomhook.js \
  --target ./path/to/target.exe \
  --frida-path frida \
  --log-file ./.log/frida.log

실행하지 않고 command만 확인:

venomhook offset-run \
  --script ./frida_scripts/venomhook.js \
  --target ./path/to/target.exe \
  --dry-run

5. Runtime Report

Frida script를 --log-format json으로 생성하고 로그를 저장했다면 runtime summary를 만들 수 있습니다.

venomhook offset-report-runtime \
  --log ./.log/frida.log \
  --out-md ./reports/runtime_summary.md \
  --out-html ./reports/runtime_summary.html

Clone this wiki locally