[Dreamhack]- Static vs Dynamic Analysis

Chris Kim·2024년 9월 29일

리버싱

목록 보기
4/10

0. 들어가며

프로그램을 분석하는데에는 여러가지 방법이 있으며 이번 글에서는 두 가지 방법론을 사용할 것이다. 이 방법론들은 적절히 혼용되어야 효과적이다. 첫 번째는 정적 분석 으로 외적인 관찰만을 통해 정보를 얻어내는 방법이며, 두 번째는 동적 분석으로 실행을 통해 동작을 분석하는 것을 의미합니다.

1. 정적 분석

정적 분석의 장점

(1) 프로그램의 전체구조를 파악하기 쉽다.
(2) 분석 환경의 제약에서도 비교적 자유롭다.
(3) 바이러스와 같은 악성 프로그램의 위협으로부터 안전하다.

정적 분석의 단점

(1) 난독화(Obfuscation)가 적용되면 분석이 매우 어려워진다.(난독화 <-> 해제(Deobfuscation))
(2) 다양한 동적 요소를 고려하기 어려움.

정적 분석의 예

(1) 상호 참조(Cross Reference):문자열이나 함수의 사용 위치를 보여주는 기능
(2) 제어 흐름 그래프(Control Flow Graph): 함수의 실행 흐름을 보기 쉽게 해주는 기능

2. 동적 분석

동적 분석의 장점

(1) 자세한 분석 없이 프로그램의 개략적인 동작 파악 가능.

동적 분석의 단점

(1) 분석환경 구축의 난해함. 난독화 기술 처럼 안티 디버깅(Anti Debugging) 기술로 디버깅을 방해 할 수 있음.

동적 분석의 예

윈도우의 대표적인 동적 분석 도구로 디버거 중 하나인 x64dbg가 있다. 이를 이용해 어셈블리 코드, CPU 레지스터 상태, 메모리와 스택의 값을 확인 할 수 있다.

profile
회계+IT=???

0개의 댓글