위키득계정 ↗
기술

Angr

Angr기술
분야
바이너리 분석
환경
Python 라이브러리
주요 기능
기호 실행과 제어 흐름 분석
대상
지원되는 바이너리와 아키텍처
Angr은 Python으로 바이너리의 구조와 동작을 분석하는 프레임워크다. 기호 실행과 제어 흐름 분석 및 역컴파일 같은 기능을 조합해 프로그램의 성질을 조사할 수 있다.

파일을 읽고 분석 구성

바이너리를 불러와 명령어와 중간 표현 및 프로그램 구조를 다룬다. 제어 흐름과 데이터 의존 관계를 분석하거나 역컴파일 결과를 살필 수 있다. 결과는 복원한 모델이므로 원래 소스와 항상 일대일로 대응하지 않는다. 지원하는 형식과 호출 규약 및 환경 모델을 확인해 분석 범위를 정한다.

기호 상태와 경로

입력이나 레지스터와 메모리를 기호 값으로 표현하고 분기 조건에 따라 상태를 나누어 탐색할 수 있다. 실제로 가능한 상태와 제약을 만족하지 못하는 상태 및 충분히 제한되지 않은 상태를 구분한다. 모든 상태가 같은 후속 실행에 포함되는 것은 아니므로 단순한 상태 수만으로 탐색의 충실도를 판단하지 않는다.

훅과 외부 동작

함수나 시스템 호출의 동작을 대체하는 훅과 시뮬레이션 구성을 제공한다. 복잡한 환경을 단순화하는 데 도움이 되지만 대체한 의미가 실제 실행과 맞는지 검토해야 한다. 구체적인 실행과 기호 실행의 선택도 결과에 영향을 준다. 입력 파일과 분석 스크립트 및 버전을 보존하고 찾은 동작은 가능한 범위에서 실제 실행과 비교한다.

관련 문서

S2E / KLEE / Crucible / SAW 검증 도구