구조 인식형 LLM 디컴파일을 위한 계층적 그래프 추상화 HELIOS

구조 인식형 LLM 디컴파일을 위한 계층적 그래프 추상화 HELIOS
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

HELIOS는 바이너리의 제어 흐름 그래프(CFG)와 함수 호출 그래프(FCG)를 계층적 텍스트 형태로 인코딩해 일반 LLM에 제공함으로써, 기존 텍스트‑만 기반 디컴파일 방식의 구조적 맹점을 보완한다. 구조 정보를 포함한 프롬프트와 선택적 컴파일러‑피드백 루프를 결합해 컴파일 가능성(85‑94 %)과 기능 정확도(최대 5.6 %p) 모두 크게 향상시킨다.

상세 분석

본 논문은 LLM 기반 디컴파일이 “구조적 맹목성(structurally blind)”에 빠지는 근본 원인을 CFG와 FCG 같은 그래프 정보를 텍스트 시퀀스로 변환하지 않는 데서 찾는다. 기존 접근법은 (1) 대규모 파인튜닝을 통해 바이너리‑소스 쌍을 직접 학습하거나, (2) 기존 디컴파일러의 출력만을 정제하는 프롬프트 방식에 의존한다. 두 경우 모두 모델이 프로그램 흐름을 그래프 형태로 인식하지 못해, 최적화된 바이너리에서 루프·조건문·예외 처리 등을 잘못 재구성하고, 결과 코드가 컴파일 오류를 일으키는 경우가 빈번하다.

HELIOS는 이러한 한계를 극복하기 위해 세 단계의 핵심 설계를 제시한다. 첫째, 정적 분석 엔진(Ghidra)을 이용해 함수별로 (① 함수 시그니처·요약, ② CFG 요약, ③ 블록‑레벨 P‑Code, ④ 원시 디컴파일 코드) 네 개의 섹션을 계층적으로 정리한다. 이때 블록 식별자는 CFG와 일관되게 유지되어 LLM이 “블록 → 후속 블록” 관계를 명시적으로 추론할 수 있다. 둘째, 프롬프트에 “Critical Rules”라 명명한 규칙 집합을 삽입해, 예를 들어 “조건문은 반드시 if/else 형태로, 루프는 while/for 형태로 표현”과 같은 구조적 제약을 모델에게 강제한다. 셋째, 선택적 컴파일러‑인‑더‑루프를 도입해 LLM이 생성한 코드를 실제 컴파일러에 전달하고, 오류 메시지를 다시 프롬프트에 포함시켜 단 한 번의 수정 라운드만으로도 컴파일 가능성을 94 % 이상으로 끌어올린다.

실험에서는 HumanEval‑Decompile과 MBPP 벤치마크를 사용해 x86_64, ARM, MIPS 등 여섯 개 아키텍처에 걸쳐 평가하였다. Gemini 2.0과 GPT‑4.1 Mini에 각각 적용했을 때, 구조적 프롬프트만으로도 컴파일 가능 비율이 45 %→85.2 %(Gemini)·71.4 %→89.6 %(GPT‑4.1)로 크게 상승했으며, 컴파일러 피드백을 추가하면 94 % 이상으로 도달한다. 기능 정확도 역시 텍스트‑전용 프롬프트 대비 평균 3‑5.6 %p 상승했으며, 아키텍처 간 성능 편차가 현저히 감소했다. 중요한 점은 이 모든 개선이 모델 파인튜닝 없이 고정된 LLM 호출 횟수와 동일한 프롬프트 템플릿만으로 달성됐다는 것이다.

결과적으로 HELIOS는 (1) 그래프 기반 구조 정보를 텍스트로 효율적으로 압축, (2) LLM에게 명시적 구조 규칙을 제공, (3) 컴파일러 피드백을 통한 자동 오류 교정이라는 세 축을 결합함으로써, 기존 디컴파일 파이프라인의 가장 큰 약점인 “구조적 맹목성”을 근본적으로 해소한다. 이는 보안·포렌식 현장에서 다양한 하드웨어 타깃을 빠르게 분석하고, 인간 분석가가 손수 수정해야 하는 부담을 크게 경감시킬 수 있음을 의미한다.


댓글 및 학술 토론

Loading comments...

의견 남기기