Binary lifting, which is to translate a binary executable to a high-level immediate representation, is a primary step in binary analysis. Despite its importance, there are only few existing approaches to testing the correctness of binary lifters. Furthermore, the existing approaches suffer from low test coverage, because they largely depend on random test case generation. In this thesis, we present the design and implementation of the first systematic approach to testing binary lifters. we have evaluated the proposed system on 3 state-of-the-art binary lifters, and found 24 previously unknown semantic bugs. Our result demonstrates that writing a precise binary lifter is extremely difficult even for those heavily tested projects.
바이너리 실행 파일을 고수준의 중간 언어로 변환하는 바이너리 리프팅이라는 과정은 바이너리 분석에서 중요한 역할을 맡고 있다. 하지만 이에 반하여 바이너리 리프터의 정확성에 대한 연구는 별로 이루어지지 않고 있다. 또한, 기존의 방법론도 테스트 커버리지가 낮은 것이 문제인데, 이는 기존의 방법론이 랜덤하게 생성된 테스트 케이스에 의존하고 있기 때문이다. 본 논문에서는 바이너리 리프터를 점검하는 최초의 체계적인 방법에 대한 설계와 구현을 제시할 것이다. 본 논문에서는 세 개의 최신 바이너리 리프터를 가지고 본 논문의 방법론을 평가하였으며, 결과적으로 24개의 새로운 의미상의 버그를 찾았다. 이러한 결과는 충분히 많이 검증된 프로젝트라 하더라도 정확한 바이너리 리프터를 구현하는 것이 극도로 어려움을 보여준다.