정적 분석 (Static Analysis)
: 프로그램을 실행시키지 않고 분석하는 방법
< 장점 >
-
프로그램의 전체구조를 파악하기 쉬움
-
분석 환경의 제약에서도 비교적 자유로움
- 실행시킬 수 없는 파일 분석을 시도할 수 있음
-
악성 프로그램의 위협으로부터 안전함
- 만약 바이러스를 분석할 경우, 실제로 실행시키지 않고도 분석 가능
< 단점 >
-
프로그램에 난독화가 적용되면 분석이 어려워짐
- 난독화(Obfuscation)가 적용되면 프로그램의 코드가 심하게 변형돼서 이를 읽고, 실행 흐름을 파악하기 어려워짐
-
다양한 동적 요소를 고려하기 어려움
- 프로그램은 많은 함수들로 구성되어 있고 서로 복잡하게 영향을 주고 받음
< 대표적인 정적 분석 도구 : IDA >
동적 분석 (Dynamic Analysis)
< 장점 >
- 코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작을 파악할 수 있음
- 어떤 입력에 대한 개별 함수 또는 프로그램의 출력을 빠르게 확인할 수 있으므로, 이 출력값들을 기반으로 동작을 추론해 볼 수 있음
< 단점 >
-
분석 환경을 구축하기 어려울 수 있음
- 프로그램을 실행하지 못하면 동적 분석을 진행할 수 없음
-> 다른 환경의 프로그램을 동적 분석할 때에는 가상 머신을 구축하거나 프로그램을 실행할 수 있는 장치를 구매해야함
-
안티 디버깅(Anti Debugging)
- ex) 자신이 디버깅 당하고 있는지 검사하고, 디버깅 중이면 프로그램을 강제로 종료시키는 방법
< 대표적인 동적 분석 도구 : x64dbg >