Post

WinDbg – notepad.exe DLL 확인 (Windows XP 1/2)

WinDbg를 이용하여 Windows XP의 notepad.exe DLL정보 확인과 PED에 로딩된 DLL정보 확인하기 위해 notepad.exe를 대상으로 실습해보았다.

  • WinDbg Download : Download Page
  • 실습환경 : Windows XP 32bit (Vmware)
  • 실습대상 : notepad.exe
  1. Vmware에서 SeialPort 추가 후 User named pipe에 ” \.\pipe\COM_1 ” 입력

    Vmware – Serial Port 추가

  2. Windows XP에서 실행 – .\boot.ini 열람 후 아래 그림과 같이 한줄을 추가한다.

    XP에서 Boot.ini 수정

  3. 로컬에서 WinDbg를 실행 후 File – Kernel Debug 를 클릭한다. 그리고 COM 메뉴에서 Port에 ” \.\pipe\COM_1 “를 입력 후 Pipe, Reconnect 체크 후 확인을 클릭한다.

    WinDbg 실행1

    WinDbg 실행2

  4. WinDbg가 실행되고 있을 때 Windows XP 재부팅 후 디버거 사용 가능 모드를 선택한다.

    Windows Xp 재부팅

  5. WinDbg 와 연결이 된 상태에서 Debug메뉴 – Break를 클릭하면 아래 와 같이 출력되면서 Windows XP가 멈추게 된다. (Break를 걸기 전에 notepad.exe를 실행한다.)

    Debug메뉴 – Break

  6. !process 0 0 명령어를 입력 시 현재 프로세스 리스트를 출력한다.

    !process 0 0

  7. !process 0 0 notepad.exe 명령어를 통해 notepad.exe의 Address를 확인 후 .process (notepad.exe의 Address)명령어를 통하여 Context를 지정한다.

    Context 지정

  8. dt _EPROCESS (ADDRESS) 명령어를 이용하여 여러정보와 PEB 주소를 확인 할 수 있다.

    _EPROCESS

  9. dt _EPROCESS Peb (ADDRESS)를 통해 PEB의 주소를 확인 후 dt _PEB (ADDRESS)명령어 입력 후 Ldr의 주소를 확인한다.

    PEB – LDR 확인

  10. dt _PEB_LDR_DATA (ADDRESS)명령어를 통해 LDR의 정보를 확인한다. InLoadOrderModuleList, InMemoryOrderModuleList, InInitializationOrderModuleList 주소를 확인 후 이를 통해 로딩된 DLL 정보 확인이 가능하다. (뒷부분에서 다시 확인)

    LDR 정보확인

  11. notepad.exe의 ImageBase를 확인 후 !dh (ADDRESS) 명령어를 통해 PE Header 정보를 불러온다. 여기서 출력되는 IMPORT DIRECTORY를 확인 후 해당 주소를 통해 아래 그림처럼 DLL의 정보를 확인 할 수 있다.

    PE Header를 통해 DLL정보확인1

    PE Header를 통해 DLL정보확인2

This post is licensed under CC BY 4.0 by the author.