정적 분석
•
프로그램을 실행하지 않고 분석하는 방법
장점
1.
전체 구조 파악이 쉽다.
프로그램이 어떤 함수로 구성됐고 함수들은 서로 어떤 호출 관계를 갖는지, 어떤 API를 사용하고 어떤 문자열을 포함하는지 등을 종합적으로 살펴볼 수 있습니다. 분석자는 이 정보들을 바탕으로 프로그램을 큰 관점에서 이해할 수 있습니다.
2.
분석 환경의 제약에서도 비교적 자유롭다.
프로그램을 실행시키지 않아
3.
바이러스와 같은 악성 프로그램의 위협으로부터 안전하다.
프로그램을 실행시키지 않아 바이러스에 감염
단점
1.
난독화(Obfuscation)가 적용되면 분석이 매우 어려워진다.
2.
다양한 동적 요소를 고려하기 어렵다.
프로그램의 실행 흐름이 복잡할수록 심각해진다.
동적 분석
•
프로그램을 실행시키면서 분석하는 방법
장점
1.
코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작을 파악할 수 있다.
2.
어떤 입력에 대한 개별 함수 또는 프로그램의 출력을 빠르게 확인할 수 있으므로, 이 출력값들을 기반으로 동작을 추론해 볼 수 있다.
단점
1.
분석 환경을 구축하기 어려울 수 있다.
2.
안티 디버깅(Anti Debugging)에 걸린다.
디버깅 방지 코드
if (is_debugging()) // 디버깅인지 확인
exit(-1); // 프로그램 종료
Func();
C
복사