728x90
정적 분석
프로그램을 실행시키지 않고 분석하는 방법
[장점]
- 프로그램의 전체 구조를 파악하기 쉬움
- 구성된 함수, 함수간의 호출관계, 사용된 API, 포함된 문자열 등을 종합적으로 살펴볼 수 있음
- 분석 환경의 제약에서도 비교적 자유로움
- 안드로이드의 apk 파일을 소프트웨어 사용하지 않고도 분석 가능
- 바이러스와 악성 프로그램의 위협으로부터 안전함
- 바이러스를 동적 분석한다면 실행한 컴퓨터가 감염될 수 있음
- 정적 분석은 프로그램을 실행하지 않으므로 감염이 되지 않음
[단점]
- 난독화(Obfuscation)가 적용되면 분석이 매우 어려워짐
- 난독화가 적용되면 코드가 변형되어 실행흐름을 파악하기가 어려워짐
- 해제(Deobfuscation)하기 위한 여러 연구가 진행되고 있지만, 여전히 난독화 서비스들을 모두 무력하하는 방법은 알려지지 않음
- 정적 분석만으로는 다양한 동적 요소를 고려하기 어려움
- 프로그램은 실행중에 영향을 주고 받는 여러 함수로 구성됨
- 정적으로는 이 다양한 교류들이 파악하기가 어려움
정적 분석의 예시
- IDA Freeware (IDA Pro)
동적 분석
프로그램을 실행시키면서 분석하는 방법
[장점]
- 코드를 자세히 분석하지 않고 프로그램의 개략적인 동작을 파악할 수 있음
- 정적 분석만으로 이해하기 어려운 복잡한 함수 관계들을 쉽게 파악 가능
- 출력값을 기반으로 동작 추론 가능
- 입력에 대한 프로그램의 출력을 확인할 수 있음
[단점]
- 분석 환경을 구축하기 어려울 수 있음
- 프로그램을 실행하지 못하면 동적 분석을 진행할 수 없음
- 가상머신을 구축하거나 장치를 구매해야함
- 안티 디버깅(Anti Debugging)이 있음 -> 동적 분석을 방해함
if (is_debugging()) // 디버깅인지 확인
exit(-1); // 프로그램 종료
Func();
동적 분석의 예
- x64dbg
- ollydbg
728x90
'study > 보안' 카테고리의 다른 글
x86 어셈블리 언어 - 주요 명령어 정리 (2) (0) | 2023.09.08 |
---|---|
x86 어셈블리 명령어(1) 리뷰 퀴즈 (0) | 2023.09.08 |
x64 어셈블리 언어 - 주요 명령어 정리 (1) (0) | 2023.09.08 |
윈도우 메모리 구조 (0) | 2023.09.07 |
Computer Architecture 컴퓨터 구조 (0) | 2023.09.07 |