
1. 정적분석
방법 1: 프로그램의 시작 지점 Entry Point부터 분석을 시작하여 원하는 함수를 찾을 때까지 탐색
=> 바이너리의 규모가 조금만 커져도 분석에 소요되는 시간이 급증한다.
방법 2: 대상 함수의 특성이나 프로그램의 여러 외적인 정보를 이용하여 탐색
문자열 => 정적 분석을 할 때 많이 사용되는 정보 중 하나
(프로그래머는 디버깅 메세지를 출력하거나, 로그 파일을 생성하는 등의 목적으로 여러 문자열을 프로그램에 포함시키는데, 이 문자열들은 특성상 유용한 정보를 제공할 때가 많다.)






- 인자
=> argc, argv, envp 3가지 인자를 받음 - 동작
- Sleep 함수를 호출하여 1초 정지 (0x3E8u = 부호 없는 1000, 1000 밀리초)
- qword_14001DBE0라는 64비트 정수형 변수에 "Hello, world!\n" 문자열의 메모리 주소를 대입
- sub_140001060 함수에 "Hello, world!\n"를 인자로 전달하여 호출
- 반환
=> 0을 반환

- 인자
=> 첫 번째 인자로 64비트 정수형 값을 받고, 가변인자(...)를 받는다. - 동작
- 가변 인자 변수 va 선언
- va_start()로 va_list 초기화
- 표준 라이브러리 함수__acrt_iob_func()로 '1u' stdout을 포인터 v1에 반환
- 반환
=> v1, al, 0LL, va를 인자로 하여 sub_140001010 함수 호출
=> sub_140001060 함수는 printf 함수로 추정할 수 있다.
2. 동적 분석
보통 관심이 있는 동작은 프로그램 중 아주 일부분이기에 진입점부터 원하는 함수까지 한 줄씩 실행시키는 것은 비효율적
=> 디버거를 이용하여 중단점 설정(Break Point, F2) 및 실행(Run, F9)을 통해 원하는 부분만 실행

1. 디버깅과 Step over(F8)





2. 디버깅과 Step Into(F7)
Step Over의 경우 한 단계 한 단계 실행하면서 다른 함수가 있을 경우 해당 함수의 내부까지는 진입하지 않는다. 하지만 분석을 하다 함수가 호출하는 다른 함수까지 정밀하게 분석해야 될 경우가 있고, Step Into이 이러한 기능을 지원하고 있다. 내부로 진입하고 싶은 함수에서 F7을 누르면 다음과 같이 내부로 들어갈 수 있다.
