오늘의 목표
방법 위주로 간단하게 적으려고 한다.
여기에서 코드를 가져와서 작성했다.
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define BUFFER 100
int main(void)
{
char* buf = (char*)malloc(BUFFER);
printf("문자열 입력: ");
scanf_s("%s", buf, BUFFER);
printf("입력된 문자열은 : %s\n", buf);
free(buf);
// use-after-free!!
buf[0] = 10;
buf[1] = 30;
printf("%s", buf);
return 0;
}
여기에서 WDK 세트 다운로드하면 windbg, gflags가 설치된다.
디버깅 키트는 x86, x64 버전이 나뉘어 설치된다.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
프로그램을 실행하고 나면, 아래와 같은 화면에서 Image에 실행 파일 경로를 입력하고 Tab 버튼을 누르면 전체 체크박스가 활성화된다. 여기에서 Enable page heap을 누르자.
다른 참고 자료에서는 gflags 까지만 설정하면 알아서 windbg가 작동된다고 했지만, 실제로 그렇지 않았다. 여기서 언급한 내용들을 추가로 설정해줘야 한다.
1) Windbg 시스템 환경 변수 설정
2) Windbg를 기본 디버거로 설정(레지스트리 등록)
windbg.exe -I
커맨드를 입력하면, 아래와 같이 정상적으로 등록된다.여기까지 완료한 뒤에 실행해보면 잘 동작한다.