발자취
[Reverse Engineering] #02. 동적 분석과 정적 분석 본문
본 게시물은 Dreamhack의 Reverse Engineering 로드맵 과정을 학습한 기록이다.
#01 서론
소프트웨어 분석 방법
- 정적 분석: 실행 없이 겉모습만 보고 정보를 알아냄
- 동적 분석: 실행을 통해 정보를 알아냄
#02 정적 분석
1. 장점
- 프로그램 전체 구조 파악이 쉬움
- 분석 환경의 제약에서도 비교적 자유로움
- 바이러스와 같은 악성 프로그램의 위협으로 부터 안전 (실행하지 않기 때문에 감염 걱정이 없음)
2. 단점
- 난독화된 프로그램은 분석하기 어려움
- 다양한 동적 요소를 고려하기 어려움
3. 예
IDA 툴로 문자열이나 함수를 어디서 사용하는지를 보여주는 상호 참조 기능이나 함수의 실행 흐름을 볼 수 있는 제어 흐름 그래프 등을 통해 분석가가 프로그램을 쉽게 이해할 수 있게 함.
#03 동적 분석
1. 장점
- 코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작 파악 가능
- 겉모습만 보고 판단하는 것으로는 알아낼 수 없는 동적 분석을 통해 알아낼 수 있음
2. 단점
- 분석 환경을 구축하기 어려울 수 있음
- 디버깅을 방해하는 안티 디버깅
- 안티 디버깅 로직 예시
if (is_debugging()) // 디버깅인지 확인
exit(-1); // 프로그램 종료
Func();
3. 예
윈도우의 대표적인 디버거 중 하나인 x64dbg로 실행 중인 어셈블리 코드, CPU의 레지스터 상태, 메모리와 스택의 값을 확인하며 분석 가능
'Dreamhack Study > Reverse Engineering' 카테고리의 다른 글
| [Reverse Engineering] #05-2. 어셈블리어와 x86-64 - Quiz (0) | 2024.05.30 |
|---|---|
| [Reverse Engineering] #05-1. 어셈블리어와 x86-64 - 이론 (0) | 2024.05.29 |
| [Reverse Engineering] #04. Windows Memory Layout (0) | 2024.05.29 |
| [Reverse Engineering] #03. 컴퓨터 구조와 명령어 집합 구조 (0) | 2024.05.29 |
| [Reverse Engineering] #01. Binary (0) | 2023.05.14 |