위키득계정 ↗
기술

Remill

Remill기술
분류
정적 바이너리 번역 라이브러리
출력
LLVM 비트코드
주요 관심사
명령어 의미의 리프팅
활용 도구
McSema
Remill은 기계어 명령을 LLVM 비트코드로 변환하는 정적 바이너리 번역 라이브러리다. 실행 파일 전체의 구조 복원보다 개별 명령의 의미를 정확히 옮기는 데 초점을 둔다.

명령어의 동작을 옮기기

기계 명령이 레지스터와 메모리를 어떻게 바꾸는지 중간 표현으로 나타낸다. 디스어셈블러가 명령의 이름과 피연산자를 읽는 작업보다 의미에 초점을 둔 변환이다. 이 표현은 다른 분석 도구가 프로그램 동작을 처리하는 기반이 된다.

상위 도구와 역할 분담

McSema처럼 바이너리에서 제어 흐름을 복원하는 도구가 Remill을 명령어 변환에 사용할 수 있다. 파일 로딩과 함수 경계 판단, 실행 환경 구성은 별도의 문제다. 라이브러리가 있다는 이유로 전체 바이너리 복원이 자동 해결되지는 않는다.

아키텍처와 버전 확인

여러 명령어 집합을 지원하지만 지원 중인 기능과 개발 중인 기능은 구분해야 한다. LLVM과 명령 디코더 등의 의존성도 구성에 영향을 준다. 변환 결과를 재현하려면 대상 아키텍처와 도구 버전, 실제 활성화한 기능을 함께 확인한다.

관련 문서

McSema / Revng / Capstone / BAP