Skip to content

LLM Layer

luckyboxx edited this page May 9, 2026 · 1 revision

LLM Layer

LLM layer는 opt-in입니다. 명시적인 --use-llm-* 플래그가 없으면 VenomHook은 LLM 모듈을 import하거나 호출하지 않고 결정론적으로 동작합니다.

설치:

pip install -e '.[llm]'
export ANTHROPIC_API_KEY=sk-ant-...

공통 옵션:

Option Meaning
`--llm-provider {anthropic echo}`
--llm-model <name> provider 기본 모델 override
--llm-token-budget N run 전체 input + output token cap
--llm-cache-dir DIR SQLite response cache
--no-llm-cache cache 비활성화

1. Semantic Tagging

Rule-based scoring 이후 semantic:* tag를 추가합니다.

venomhook offset-static \
  --static-json ./sample/examples/static_meta.sample.json \
  --use-llm-tagging \
  --llm-provider anthropic \
  --llm-token-budget 20000 \
  --out ./out/venomhook.json

SDK/API key 누락, provider 실패, parse 실패, budget 초과는 해당 endpoint에만 영향을 주며 rule-based 결과는 유지됩니다.

2. Prototype Inference

Rule-based inference가 비워 둔 HookSpec.proto만 채웁니다. 이미 채워진 proto는 덮어쓰지 않습니다.

venomhook offset-static \
  --static-json ./sample/examples/static_meta.sample.json \
  --use-llm-proto \
  --use-llm-tagging \
  --llm-provider anthropic \
  --llm-token-budget 30000 \
  --out ./out/venomhook.json

모델 출력 형식:

ret: jstring
arg0: JNIEnv *
arg1: jobject
arg2: const char *

3. Java-Native Flow Description

JNI hook 동작을 짧은 한 문장으로 설명해 HookSpec.description에 저장합니다.

venomhook offset-static \
  --static-json ./out/staticmeta.android.json \
  --use-llm-flow \
  --llm-token-budget 30000 \
  --out ./out/venomhook.json

Metadata가 부족하면 모델은 SKIP을 반환할 수 있고, description은 비워둡니다.

4. Runtime Report Summary

Markdown/HTML runtime report 끝에 analyst summary를 추가합니다.

venomhook offset-report-runtime \
  --log ./logs/frida.log \
  --out-md ./out/summary.md \
  --out-html ./out/summary.html \
  --use-llm-report \
  --llm-token-budget 5000

HTML output은 generated text를 escape 처리합니다.

5. Signature Recovery

HookSpec.sig에서 빌드별로 달라질 수 있는 byte를 ?? wildcard로 바꿔 Frida Memory.scan fallback 성공률을 높입니다.

venomhook offset-static \
  --static-json ./out/staticmeta.json \
  --use-llm-recovery \
  --llm-token-budget 30000 \
  --out ./out/venomhook.json

검증 규칙:

  • token 수는 원본 signature와 같아야 함
  • token은 2-hex 또는 ??만 허용
  • non-wildcard byte는 원본과 정확히 일치해야 함
  • wildcard 비율 75% 초과는 거부
  • invalid output은 원본 signature 유지

Clone this wiki locally