위키득계정 ↗
기술

McSema

McSema기술
분류
실행 파일 리프터
출력
LLVM 비트코드
주요 단계
제어 흐름 복원과 명령어 변환
명령 의미 기반
Remill
McSema는 네이티브 실행 파일을 LLVM 비트코드로 옮기는 바이너리 리프터다. 제어 흐름 복원과 명령어 변환을 나누어 수행하며 LLVM 기반 분석 도구와 연결한다.

바이너리를 다른 표현으로 옮기기

소스 없이 실행 코드를 분석하려면 기존 분석 도구가 이해하는 표현으로 변환하는 경로가 필요할 수 있다. McSema는 기계 명령을 LLVM 비트코드로 옮긴다. 이는 원래 고수준 소스를 복구하는 디컴파일과 구별되는 작업이다.

두 단계의 처리

mcsema-disass는 제어 흐름을 복원하고 mcsema-lift는 그 결과를 비트코드로 변환한다. 명령어의 의미 변환에는 Remill 라이브러리를 활용한다. 앞 단계가 잘못 복원한 경로나 함수 경계는 뒤의 분석에도 영향을 줄 수 있다.

분석과 재컴파일 활용

변환한 표현을 기호 실행이나 퍼징, LLVM 변환과 연결할 수 있다. 다시 실행 파일로 컴파일하는 바이너리 재작성 경로도 있다. 대상 아키텍처와 명령 지원, 제어 흐름 복원 도구 및 LLVM 버전의 조합을 함께 확인한다.

관련 문서

KLEE / RetDec / Revng