LLM으로 x86 바이너리 사전 변환
최근 30일 조회수 — 좋아요 —핵심 요약
LLM과 의미 검증을 활용해 x86-64 바이너리를 실행 전 AArch64용으로 변환하는 기법이 제안됐다.

대규모 언어 모델(LLM)을 이용해 x86-64 바이너리를 실행 전에 AArch64용으로 바꾸는 정적 바이너리 번역 기법이 제안됐다. 10월 5일 공개된 논문은 어셈블리 코드를 다른 아키텍처의 어셈블리 코드로 변환한 뒤 바이너리를 생성한다. 실행 중에는 별도의 번역 프레임워크가 필요하지 않다는 점이 핵심이다.1
이 연구가 겨냥한 문제는 AArch64 하드웨어의 성장 속도와 소프트웨어 생태계 사이의 격차다. x86-64용으로 만들어진 기존 프로그램을 AArch64에서 실행하려면 아키텍처가 다른 명령어를 변환해야 한다. 동적 번역은 프로그램을 실행하면서 코드를 바꾸므로 런타임 오버헤드가 생긴다. 반면 기존 정적 번역은 실행 전에 작업을 끝낼 수 있지만, 바이너리 분석 자체가 복잡해 변환 결과의 신뢰성을 확보하기 어렵다.
논문이 제시한 방식은 이 두 문제 가운데 런타임 비용을 없애면서 정적 번역의 정확도를 보완하는 데 초점을 맞춘다. LLM이 어셈블리 간 변환을 자동화해 사람의 개입을 줄이고, 결과물을 AArch64에서 직접 실행할 수 있는 네이티브에 가까운 바이너리로 만든다. 즉, LLM을 실행 시점의 구성 요소로 넣는 것이 아니라 사전 변환 단계의 코드 생성 도구로 쓰는 접근이다.
정확성 검증은 전체 프로그램을 한꺼번에 다루지 않고 어셈블리 코드를 단순한 조각으로 나눠 수행한다. 연구진은 이 분할이 각 조각의 의미가 보존됐는지 효율적으로 확인하게 해주며, 규모가 큰 프로그램에도 검증 절차를 적용할 수 있다고 설명한다. LLM이 만든 코드를 그대로 신뢰하지 않고 별도 의미 검증 단계를 둔 셈이다.
평가 결과에 관해 논문은 기존 오픈소스 번역기보다 큰 폭으로 앞섰고, 생성된 바이너리가 네이티브에 가까운 성능을 냈다고 보고했다. 상용 번역기 엑사기어(ExaGear)와 비교해도 상당한 개선이 있었다는 주장이다. 다만 제공된 초록에는 벤치마크 종류, 성공률, 실행 시간 같은 구체적인 수치가 없다. 따라서 성능 우위의 크기와 복잡한 실제 프로그램에서의 적용 범위는 초록만으로 판단하기 어렵다.1
Footnotes
읽기 목록은 이 브라우저에 저장됩니다.
출처
이 글은 위 출처를 근거로 자동 생성된 뒤 발행됐습니다. 원문을 함께 확인해 주세요. 교차 보도 없이 단독 출처로 작성됐습니다.