Kuna: 코딩 에이전트 시대의 디컴파일러 개발
Kuna: Decompiler Development in the Age of Coding Agents
TL;DR Highlight
LLM이 거의 전부 짠 디컴파일러 Kuna, 제어 흐름 구조화에서 IDA Pro와 근접
Who Should Read
코딩 에이전트에게 큰 프로젝트를 맡기고 자동으로 품질을 끌어올리는 방법이 궁금한 백엔드·툴링 개발자
Core Mechanics
- LLM이 거의 모든 코드를 썼다
- Kuna는 실험용 디컴파일러(바이너리를 C 코드로 되돌리는 도구)다.
- 저자는 거의 모든 줄을 LLM이 작성했다고 밝혔다.
- 구조화 점수가 IDA와 비슷하다
- C 프로그램의 제어 흐름 구조화(if·loop·switch를 복원하는 일)에서 완벽 구조화 함수가 44.4%다.
- IDA Pro 9.2는 45.7%다.
- 비결은 자율 개선 루프
- LLM이 IDA Pro보다 성능이 나쁜 사례를 직접 연구한다.
- 시행착오로 다른 디컴파일러가 어려운 문제를 푸는 방식을 배운다.
- angr 기능 20여 개를 재구현했다
- Ghidra와 angr 디컴파일러도 개선 과정의 연구 대상이었다.
- 이 방식으로 angr의 핵심 기능 20개 이상을 Kuna에 다시 구현했다.
- 사람의 연구가 먼저 필요했다
- 자동 개선을 시작하려면 새로운 핵심 지표와 의미 있는 벤치마크 데이터가 필요했다.
- 저자는 이것이 자동 연구가 아니라 사람이 이끄는 연구라고 말한다.
Community Reactions
- 원작자가 밝힌 Ghidra 기원
- Kuna는 Ghidra를 Rust로 포팅한 것에서 출발해 상당히 바뀌었다는 설명이 나왔다.
- 사이트 스크린샷의 Switch 레이아웃과 변수 단순화는 Ghidra에 없는 기능이라고 한다.
- LLM이 디컴파일러 자체가 되면 안 되냐는 반론
- 컴파일러로 학습 데이터를 무한히 만들 수 있으니 LLM을 디컴파일러로 학습시키는 게 낫다는 의견이 있었다.
- 저자는 지난 20년간 시도됐지만 기본 지표에서 전통 디컴파일러를 이긴 사례가 없다고 답했다.
- 함수·변수 이름 추론에 대한 기대
- 에이전트가 데이터 흐름을 빠르게 따라가 이름을 만들어 주면 좋겠다는 의견이 있었다.
- 저자는 DecBench에서 Codex와 Claude가 어셈블리만 받고도 우세하지만 재현율 문제가 크다고 했다.
How to Apply
- 실패 사례 모음으로 개선 루프 시작하기
- 오늘 코드 생성 에이전트가 기준 도구보다 나쁜 결과를 낸 케이스 5개를 모아라.
- 각 케이스에 기준 도구의 출력과 비교 지표를 붙여 에이전트에게 차이를 분석시켜라.
- 측정 가능한 지표부터 정하기
- 에이전트에게 개선을 맡기기 전에 사람이 지표와 벤치마크 데이터를 먼저 설계하라.
- 지표 없이 맡기지 말고 점수가 오르는지만 자동 검증하게 하라.
- 기존 도구를 교사로 활용하기
- 재구현할 기능이 있으면 성숙한 오픈소스 구현의 입출력 예시를 에이전트에게 주고 따라잡게 하라.
- 라이선스를 먼저 확인하라.
Try It
# Claude나 Claude Code에 그대로 붙여넣기 (원문 방법의 간이 버전)
너는 {{우리 도구}}를 개선하는 에이전트다. 기준 도구는 {{기준 도구}}다.
지표는 {{지표 이름}}이다.
아래는 우리 도구가 기준 도구보다 점수가 낮은 사례들이다.
{{실패 사례와 양쪽 출력}}
다음 순서로 해라.
1. 사례마다 기준 도구가 어떻게 더 잘 처리하는지 원인을 분석해라.
2. 공통 패턴 하나를 골라 우리 코드에 반영할 수정안을 만들어라.
3. 수정 후 지표가 오를지 확인할 테스트를 써라.
이어서 해 볼 것: 수정 후 다시 점수를 재고 남은 실패 사례로 반복하라.Terminology
관련 논문
같은 시뮬레이션, 다른 근거: 도구 출력을 파일로 넘기면 LLM 에이전트 정확도가 어디서 깎이나
긴 툴 출력을 파일로 넘기자 GPT-5.1은 정확도 11.3%p 하락, 정식 출력 지정하니 회복
가짜 뉴스가 진짜 폭락을: LLM 트레이딩 에이전트 대상 정보 주입 공격
가짜 헤드라인 한 줄로 LLM 트레이딩 에이전트 62%를 조종했다(프롬프트 주입은 14%)
Harness Engineering 101: LLM은 뇌, harness는 몸
에이전트는 JSON 배열을 관리하는 루프이고, 16개 챕터로 직접 만들어 본다
Harness²: 에이전트 harness를 스스로 고쳐 쓰는 재귀 최적화 프레임워크
모델은 고정하고 harness를 재귀로 고쳤더니 벤치마크 점수가 최대 11.8%p 올랐다
해고된 Savannah 경찰관, ICE 요원 남편에게 Flock 계정 공유
경찰관이 Flock 계정을 남편(ICE 요원)에게 공유했고, 감사에서 983건 검색이 드러나 해고됐다
tmux와 Claude Code: 세션, send-keys, 그리고 한계선
tmux로 Claude Code 여러 개를 돌리면 편하지만 에이전트 4개쯤에서 한계가 온다
Hybrid Reasoning Agents: 잠재 공간에서 생각하고 텍스트로 행동하는 LLM 에이전트
잠재 공간 추론과 텍스트 도구 호출을 섞었더니 성능 10.4%↑, 토큰 최대 54.7%↓