[리버싱] DynamoRIO, Lighthouse로 코드커버리지 분석하기
코드 커버리지(code coverage) 코드 커버리지는 개발 단계에서 테스트 코드나 도구를 이용해서 실행 가능한 모든 코드를 테스트하는 지표 중 하나이다. ‘코드가 얼마나 실행되었는지’ 살펴볼 수 있고 수치를 통해서 확인할 수 있다. 개발 환경에서는 코드를 볼 수 있기 때문에 ‘화이트 박스 테스트’가 가능하지만, 이미 컴파일된 바이너리를 분석할 때는 코드를 직접 살펴보는 것이 아니기 때문에 ‘블랙박스 테스트’로 진행해야 한다. 코드의 구조는 구문(Statement), 조건(Condition), 결정(Decision)의 구조로 되어 있다. 코드 커버리지는 이 요소들을 얼마나 넓게 커버하고 있느냐에 따라 측정한다. 구문(Statement) : 모든 라인이 한 번 이상 실행 조건(Condition) : 조건..