본문으로 건너뛰기

© 2026 Molayo

arXiv논문2026. 05. 20. 13:45

휴리스틱 없는 결정론적 완전 정적 전체 바이너리 번역

요약

Elevator는 디버그 정보나 소스 코드 없이 x86-64 실행 파일을 AArch64로 정적으로 번역하는 최초의 바이너리 번역기입니다. 휴리스틱 대신 모든 가능한 바이트 해석을 고려하여 별도의 제어 흐름 경로를 생성함으로써 결정론적이고 신뢰할 수 있는 완전한 바이너리를 생성합니다. 코드 크기는 확장되지만, 배포 전 검증과 인증이 가능하며 QEMU의 JIT 에뮬레이션과 대등한 성능을 보여줍니다.

핵심 포인트

  • 휴리스틱이나 런타임 폴백 없이 모든 가능한 바이트 해석을 고려하는 결정론적 접근 방식 채택
  • 신뢰할 수 있는 코드 베이스 내에 런타임 구성 요소가 없는 완전하고 독립적인 바이너리 생성
  • 코드 타일(Tiles) 조합 방식을 통한 민첩한 번역 프레임워크 제공
  • 배포 전 테스트, 검증, 인증 및 암호화 서명이 가능하여 에뮬레이터 대비 위험 감소
  • SPECint 2006 테스트 결과 QEMU 유저 모드 JIT 에뮬레이션과 대등하거나 우수한 성능 입증

우리는 디버그 정보, 소스 코드, 또는 코드 레이아웃에 대한 가정이 없는 상태에서 x86-64 실행 파일 전체를 AArch64로 정적으로 번역하는 최초의 바이너리 번역기인 Elevator를 선보입니다. 코드 대 데이터 디코딩 오류를 처리하기 위해 휴리스틱 (Heuristics) 또는 런타임 폴백 (Runtime fallbacks)에 의존하는 기존 시스템과 달리, Elevator는 모든 바이트에 대한 가능한 모든 해석을 고려하며, 각각의 실행 가능한 해석에 대해 사전에 별도의 번역을 생성합니다. 모든 바이트는 데이터, 옵코드 (Opcode), 또는 옵코드 인자 (Opcode argument)로 해석될 수 있습니다. 우리는 모든 해석에 대해 별도의 제어 흐름 경로 (Control flow paths)를 생성하며, 비정상적인 종료로 이어지는 경로만을 제거합니다. 번역은 소스 ISA (Instruction Set Architecture)의 상위 수준 기술로부터 자동으로 도출된 코드 "타일 (Tiles)"을 조합하여 구축되며, 이를 통해 민첩한 번역 프레임워크를 제공합니다. 이 접근 방식은 결정론적 (Deterministic)이며, 신뢰할 수 있는 코드 베이스 (Trusted code base) 내에 런타임 구성 요소가 없는 완전하고 독립적인 바이너리를 생성합니다. 주요 비용은 상당한 코드 크기 확장입니다. 핵심적인 이점은 출력이 실제로 실행될 실제 코드라는 점이며, 이를 통해 배포 전에 테스트, 검증, 인증 및 암호화 서명을 가능하게 하여 에뮬레이터 (Emulator) 또는 JIT 컴파일러 (JIT compiler)에 비해 위험을 줄일 수 있습니다. 우리는 전체 SPECint 2006 제품군을 포함한 다양한 실제 바이너리 코퍼스 (Corpus)에서 Elevator를 평가하여, 정적 전체 프로그램 바이너리 번역이 신뢰할 수 있으면서도 실용적일 수 있음을 입증했습니다. Elevator는 QEMU의 유저 모드 JIT 에뮬레이션 (User-mode JIT emulation)과 대등하거나 그 이상의 성능을 달성합니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 arXiv cs.PL (Programming Languages)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0