x64dbg 디버거, 실행 중인 프로그램을 들여다본다

요약

Windows 프로그램을 위한 디버거로 64비트와 32비트를 모두 다룬다. 실행 중인 바이너리가 실제로 무엇을 하는지 보여 준다. 중단점, 읽고 고칠 수 있는 메모리, 동적 분석, 확장 구조까지 갖췄다.

추천
이름
x64dbg 디버거
버전
2026.05.27
요금
무료
오픈소스
오픈소스
운영체제
Windows
공식 사이트
https://x64dbg.com/
업데이트
2026-10-14 22:00

소스 코드는 무슨 일이 일어나야 하는지 말한다

프로그램을 읽는 것은 이해하는 한 방법이고, 돌아가는 것을 보는 것은 또 다른 방법이다. 소스가 붙지 않은 바이너리에게는 두 번째가 유일한 방법이다. 디버거는 그 두 번째를 위한 도구로, 고른 지점에서 프로그램을 멈추고 그 순간의 모든 상태를 보여 주며 한 명령씩 앞으로 나아가게 한다. x64dbg는 Windows 프로그램을 위한 디버거이며 64비트와 32비트를 모두 다룬다. 불투명한 실행 파일을 관찰 가능한 결정의 연속으로 바꾸는 도구다.

화면이 무게를 진다

디버깅은 한 번에 많은 정보를 만들고, 그 배치가 이 일이 가능한지를 결정한다. x64dbg는 역어셈블, 레지스터, 메모리, 호출 스택을 동시에 보이는 창으로 늘어놓아서 명령과 그 결과의 관계가 찾는 일이 아니라 보는 일이 된다. 겉모양 문제가 아니다. 맥락을 탭 뒤에 숨기는 디버거는 사용자에게 상태를 머리에 담아 두라고 강요하고, 사람의 기억은 그것을 둘 자리로 최악이다.

중단점, 그리고 그것이 요구하는 규율

핵심 동작은 고른 지점에서 실행을 멈추고 주위를 둘러보는 것이다. 소프트웨어 중단점, 하드웨어 중단점, 조건부 형태가 모두 있고 이것이 중요하다. 흥미로운 순간은 대개 하나의 주소가 아니라 특정 조건에서 도달하는 주소이기 때문이다. 값을 지켜보다 바뀔 때만 멈추는 것은, 천 개 사건의 기록을 읽는 일과 무언가를 망가뜨린 한 건을 보는 일의 차이다.

역어셈블과 레지스터가 놓인 x64dbg 기본 창

읽고 고칠 수 있는 메모리

프로그램의 상태는 메모리에 있고, 그것을 정확히 보여 주고 의도적으로 바꿀 수 있는 디버거는 가설을 시험하는 수단이 된다. 바이트 하나를 바꾸고 분기가 반대쪽으로 가는지 본다. 버퍼를 살피며 프로그램이 믿는 길이와 실제로 도착한 길이가 맞는지 본다. 디버깅과 짐작을 가르는 지점이 여기다. 돌아가는 프로그램에 대해 시험할 수 있는 가설은 더 이상 의견이 아니다.

로컬과 원격 세션

눈앞의 기계에 있는 프로그램을 디버깅하는 것이 흔한 경우다. 다른 곳에서 도는 프로그램을 디버깅하는 것은 결함이 특정 시스템에서만 재현되거나, 조사 대상 소프트웨어를 방해해서는 안 될 때 나타난다. 둘 다 지원한다는 것은 같은 조사가 편한 환경과 필요한 환경 사이를 도구를 바꾸지 않고 옮겨 갈 수 있다는 뜻이다.

방법으로서의 동적 분석

정적 검사는 파일을 읽고 추론한다. 동적 분석은 실행하고 관찰한다. 디버거는 후자를 위한 도구이고, 정적 읽기로는 답할 수 없는 질문에 답한다. 이 입력에서 실제로 어느 분기가 선택되는지, 무엇이 언제 로드되는지, 데이터가 망가졌을 때 실행이 어디서 멈추는지. 보안 작업에서는 파일에 적히지 않고 실행 중에 조립되는 동작을 보는 유일한 방법이 되는 일이 많다.

중단점 설정과 조건부 정지

확장, 분석은 늘 개별적이므로

조사마다 모양이 다르고 디버거가 모든 모양을 위한 기능을 함께 넣을 수는 없다. 확장 구조가 도구를 과제 쪽으로 자라게 한다. 풀어내는 절차, 반복 점검을 위한 스크립트, 특정 형식에 맞춘 보기. 결과적으로 같은 디버거가 메모리 결함을 쫓는 개발자와 낯선 바이너리를 지도로 그리는 연구자 모두에게 쓰이고, 어느 쪽도 상대의 요구를 위해 값을 치르지 않는다.

여기서 오픈소스는 논거가 된다

다른 소프트웨어를 조사하는 도구에게 오픈소스란 라이선스 문제가 아니다. 디버거 자체를 믿는 대신 확인할 수 있다는 뜻이고, 이 도구가 나와 분석 대상 사이에 앉는 상황에서는 합당한 요구다. 또한 드문 조사 방식에 맞춰 도구를 고칠 수 있고, 제공자가 할 만하다고 판단하기를 기다리지 않아도 된다는 뜻이기도 하다.

누가 무엇을 위해 쓰는가

개발자는 소스만으로는 설명되지 않는 중단의 이유를 찾는 데 쓴다. 특히 자기가 쓰지 않은 코드에서. 보안 연구자는 낯선 바이너리가 무엇을 하는지 이해하는 데 쓴다. 악의적 동작이든 문서 없는 동작이든 마찬가지다. 배우는 사람은 컴파일된 프로그램이 실제로 어떻게 실행되는지 보는 데 쓴다. 아무리 읽어도 전해지지 않는 수업이다. 공통점은 가정이 아니라 관찰이 필요하다는 것이다.

편집할 수 있는 메모리 보기

사용자에게 요구하는 것

대상을 숨기는 도구가 아니다. 어셈블리를 읽는 일, 메모리 배치, 호출 규약이 어휘이고, 그것이 없는 사람에게 화면은 불친절할 만큼 정직하게 보인다. 문서와 안내가 있고 시간을 들일 가치가 있다. 대안은 더 단순한 디버거가 아니라 그 질문에 아예 답할 수 없는 상태이기 때문이다. 지식을 보상하고 동시에 천천히 가르치는 도구다.

범위에 대한 합당한 입장

Windows 디버거이고, 여러 플랫폼으로 얇게 퍼지는 대신 그 일을 철저히 한다. 무료이고 오픈소스이며, 연구 도구에서 이것이 중요한 것은 쓸 수 있느냐가 예산 승인에 달려서는 안 되기 때문이다. 디컴파일러도, 역어셈블 묶음도, 악성 소프트웨어 격리 환경도 아니다. 작업 흐름에서 프로그램이 돌아가고 누군가 지켜보는 부분을 맡는다. 아주 좁은 설명이지만 그 부분은 결국 매우 많은 일의 중심이 된다.

호출 스택과 실행 제어 패널

설치된 채로 남는 이유

대부분의 디버거는 거의 열리지 않고, 열릴 때는 대단히 중요하다. 남느냐는 필요한 그날 얼마나 길을 막지 않느냐로 갈린다. 바이너리를 들고 빠르게 시작하는지, 창이 기억이 기대하는 자리에 있는지, 지금 문제를 위한 확장이 이미 있는지. x64dbg는 실제로 쓰는 사람들이 만들었고 그 점이 그런 세부에 드러난다. 예고 없이 오는 질문에 기본 답이 된 실무적 이유도 거기에 있다.

x64dbg 디버거다운로드
지원 운영체제: Windows