Windbg, Gflags 연결 방법

Hunjison·2024년 1월 17일
0

Reverse Engineering

목록 보기
8/9

오늘의 목표

  • Memory access violation 이 발생하는 코드 작성 & 빌드
  • gflags를 이용해 memory 오류 탐지
  • windbg로 연결하여 디버거 실행

방법 위주로 간단하게 적으려고 한다.


1. 코드 작성

여기에서 코드를 가져와서 작성했다.

#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;
}

2. gflags 설치 및 설정

여기에서 WDK 세트 다운로드하면 windbg, gflags가 설치된다.
디버깅 키트는 x86, x64 버전이 나뉘어 설치된다.

  • x86 기준 설치 경로: C:\Program Files (x86)\Windows Kits\10\Debuggers\x86

프로그램을 실행하고 나면, 아래와 같은 화면에서 Image에 실행 파일 경로를 입력하고 Tab 버튼을 누르면 전체 체크박스가 활성화된다. 여기에서 Enable page heap을 누르자.

3. Windbg 설정

다른 참고 자료에서는 gflags 까지만 설정하면 알아서 windbg가 작동된다고 했지만, 실제로 그렇지 않았다. 여기서 언급한 내용들을 추가로 설정해줘야 한다.

1) Windbg 시스템 환경 변수 설정

  • 시스템 환경변수의 PATH 부분에 위에서 언급한 디버깅 키트 경로(windbg, gflags 모두 같은 경로에 있음) 를 추가해주자

2) Windbg를 기본 디버거로 설정(레지스트리 등록)

  • 관리자 권한의 cmd/powershell에서 windbg.exe -I 커맨드를 입력하면, 아래와 같이 정상적으로 등록된다.

4. 완료

여기까지 완료한 뒤에 실행해보면 잘 동작한다.

profile
비전공자 출신 화이트햇 해커

0개의 댓글