[Dreamhack]Static Analysis vs Dynamic Analysis

최윤지·2024년 8월 18일

Reverse Engineering

목록 보기
1/7

정적 분석 (Static Analysis)

: 프로그램을 실행시키지 않고 분석하는 방법

< 장점 >

  • 프로그램의 전체구조를 파악하기 쉬움

  • 분석 환경의 제약에서도 비교적 자유로움

    • 실행시킬 수 없는 파일 분석을 시도할 수 있음
  • 악성 프로그램의 위협으로부터 안전함

    • 만약 바이러스를 분석할 경우, 실제로 실행시키지 않고도 분석 가능

< 단점 >

  • 프로그램에 난독화가 적용되면 분석이 어려워짐

    • 난독화(Obfuscation)가 적용되면 프로그램의 코드가 심하게 변형돼서 이를 읽고, 실행 흐름을 파악하기 어려워짐
  • 다양한 동적 요소를 고려하기 어려움

    • 프로그램은 많은 함수들로 구성되어 있고 서로 복잡하게 영향을 주고 받음

< 대표적인 정적 분석 도구 : IDA >

동적 분석 (Dynamic Analysis)

< 장점 >

  • 코드를 자세히 분석해보지 않고도 프로그램의 개략적인 동작을 파악할 수 있음
    • 어떤 입력에 대한 개별 함수 또는 프로그램의 출력을 빠르게 확인할 수 있으므로, 이 출력값들을 기반으로 동작을 추론해 볼 수 있음

< 단점 >

  • 분석 환경을 구축하기 어려울 수 있음

    • 프로그램을 실행하지 못하면 동적 분석을 진행할 수 없음
      -> 다른 환경의 프로그램을 동적 분석할 때에는 가상 머신을 구축하거나 프로그램을 실행할 수 있는 장치를 구매해야함
  • 안티 디버깅(Anti Debugging)

    • ex) 자신이 디버깅 당하고 있는지 검사하고, 디버깅 중이면 프로그램을 강제로 종료시키는 방법

< 대표적인 동적 분석 도구 : x64dbg >

0개의 댓글