windbg
[Assembly] 디버깅을 위한 8086 어셈블리
[Assembly] 디버깅을 위한 8086 어셈블리
2016.01.17디버깅을 위해서는 항상 소스코드 레벨에서 할 수 없기때문에 어셈블리언어를 읽을 수 있어야 합니다.디버깅을 위한 어셈블리는 언어를 깊이 많이 알지 못하더라도 디버깅을 할 수 있지만,어셈블리를 모르면 디버깅하는데 많은 어려움이 있으므로 이번에 몇가지 소개시켜드리겠습니다.실제로 디버깅시 사용되는 어셈블리어는 많이 없으며, 자주 나오는 패턴에는 소스코드를 보듯 익숙해질 필요가 있습니다. ASSEMBLY 가장 대표적인 명령어를 예로 들자면 아래와 같습니다.mov (값을 대입)add (더하기)sub (빼기)inc (1 더하기)dec (1 빼기)jmp (go to)call (함수 호출)cmp (두 값을 비교) 각각 C언어와 비교하면서 어떻게 코드가 생성되는지 보겠습니다. 해당 코드는 visual studio 2015..
[WinDbg] 특정 프로세스 디버깅하기
[WinDbg] 특정 프로세스 디버깅하기
2016.01.13user mode process debugging 현재 동작중이거나 동작 하려는 프로세스를 디버깅 하는 방법 입니다. 기본적으로 프로세스 디버깅에는 ollydbg나 IDA를 이용하는게 일반적이지만, WinDbg와 친해지기 위해 프로세스 디버깅을 해보겠습니다. 더불어 WinDbg를 통하여 프로세스를 디버깅하면서 커널까지 어떻게 들어가서 동작하는지도 알아볼 수 있습니다. 단, 분석은 본인 몫 입니다 사용되는 명령어 !process (process 정보 출력) .process (set process context) bp (break point) bm (wildcard를 지원하는 break point) bc (break point clear) start 오늘의 타겟 툴은 cmd.exe 입니다! 콘솔창의 동작을 ..
[WinDbg] DriverEntry부터 디버깅 시작하기
[WinDbg] DriverEntry부터 디버깅 시작하기
2016.01.10break point 디버깅이 준비가 되었으면 이제 시작해야겠죠에러가 난 덤프 파일이 있을수 있지만 아직 준비단계이기에 단축키 및 간단한 명령어등을 이용해서 WinDbg와 친해지도록 하겠습니다.디버깅은 오류가 났을때에 덤프를 통해서 분석을 하기도 하고 Kernel live debugging을 하기 위해서도 사용할 수 있습니다. 오늘의 디버깅 방법은 driver가 load되는 시점에 bp를 걸어서 원하는 함수를 디버깅 하는 방법을 해보겠습니다. 사용되는 단축키는F8 (step in - 함수 진입시 안으로 들어갈 때)F9 (현재 cursor break point)F10 (step over - 함수 안으로 진입하지 않고 다음 스텝으로 진행)Ctrl + Break (동작중 break point) 사용되는 명령어..
[WinDbg] vmware에 WinDbg 연결하여 디버깅 준비하기
[WinDbg] vmware에 WinDbg 연결하여 디버깅 준비하기
2016.01.06vmware & WinDbg 간단한 유저 프로세스 디버깅은 로컬에서도 상관없겠지만, 커널 디버깅을 위해선 원격지 PC가 필요한게 일반적입니다. 그렇다고 로컬에서 커널 디버깅이 불가능한건 아니지만, 제약적인 디버깅이 가능합니다. 그렇다면 설정을 어떻게 해야 vmware의 windows와 로컬PC의 WinDbg를 연결할 수 있을까요?? 우선 이전에 소개드렸던 내용으로 WinDbg가 설치되어있어야 합니다. 2016/01/05 - [Development/Debugging] - [WinDbg] Kernel Debugging을 위한 디버거 다운로드 및 설치! vmware와 windows는 설치되어있다는 가정 하에 설명드리겠습니다. vmware 에서 Edit virtual machine settings을 클릭하여 설..
[WinDbg] Kernel Debugging을 위한 디버거 다운로드 및 설치!
[WinDbg] Kernel Debugging을 위한 디버거 다운로드 및 설치!
2016.01.05WinDbg WinDbg는 MicroSoft 에서 지원하는 공식 디버깅 툴 이며 ollydbg와 더불어 대표적인 디버깅 툴 입니다.유저모드에선 여러가지 디버깅툴이 존재하지만 커널 디버깅에는 독보적인 툴 입니다. 예전엔 개별 툴 다운로드가 가능했지만 상위버전으로 오면서 SDK를 설치해야 WinDbg를 사용할 수 있습니다. 각각에 맞는 버전으로 다운받으세요 Windows 8.1 https://msdn.microsoft.com/ko-kr/windows/hardware/hh852365 Windows 10 https://msdn.microsoft.com/ko-kr/windows/hardware/dn913721.aspx#wdk10 설치시 직접 체크하거나 옵션을 수정할필요는 없으며 기본값으로 하면 됩니다. 하지만 D..
Windbg 명령어 모음
Windbg 명령어 모음
2015.03.21eb eb 주소값 00 00 00 00 00 : 주소값부터 시작해서 5바이트를 00으로 채운다. - 심볼이 맞는지 확인하는 명령 0:000> !chksym ntdll - ntdll의 Export 함수 변경여부 확인하는 명령 0:000> !chkimg ntdll -d - notepad.exe의 _EPROCESS 주소 찾기 kd> !process 0 0 notepad.exe - notepad.exe의 스레드 주소 찾기(full detail 얻기) kd> !process _EPROCESS 7 PROCESS 8a3ceda0 SessionId: 0 Cid: 00f0 Peb: 7ffd7000 ParentCid: 0748 DirBase: 53ca5000 ObjectTable: e180c200 HandleCount: ..
Kernel debugging Windbg Symbol Path
Kernel debugging Windbg Symbol Path
2015.03.21Windbg에서 디버깅을 하기위해선 심볼을 설정해주어야한다. File -> Symbol Search Path 에 다음과 같이 입력해주면 된다. SRV*c:\symbols*http://msdl.microsoft.com/download/symbols 커널디버깅 중 심볼을 로드하는경우kd> .reload 명령어를 통하여 심볼을 재등록하도록 한다.