⌨ DEVELOPMENT/Debugging
dump 분석을 위한 windbg 64bit 다운로드 및 설치
dump 분석을 위한 windbg 64bit 다운로드 및 설치
2019.08.04windows program을 개발할 때 가장 중요한 요소중 하나는 디버깅이라고 생각합니다. 아무리 경험이 많은 개발자라도 완벽한 프로그램은 개발을 할 수 없기 때문인데요, Windows 개발자인 Raymond Chen 마저도 윈도우 업데이트 때마다 수많은 테스트를 거쳤음에도 매번 오류가 발생하여 억울함을 호소할 정도이니 더 말할것도 없겠죠? 그렇다면 프로그램에 오류가 발생하면 dump file을 저장하여 분석을 통해 문제를 수정하도록 하는 게 좋은 방법입니다. windbg 다운로드 및 설치 windbg를 설치하기 위해선 windows 10 sdk를 설치해야 합니다. 아래 공식 사이트에서 다운로드 가능하며, 설치 시 debugging tool 항목만 선택하여 https://docs.microsoft.co..
[Debugging] 프로세스 크래시 발생시 덤프 남기기
[Debugging] 프로세스 크래시 발생시 덤프 남기기
2016.01.22User Process Crash Dump윈도우 XP에서는 닥터 왓슨을 이용하여 크래시 덤프를 남기지만 Vista 이상에선 사라졌습니다. Vista이상에선 WER(Windows Error Reporting) 시스템이 MS에 덤프를 전송하지만 로컬에는 남지 않도록 되어있습니다. 이런경우 간단한 설정(?) 으로 로컬에 덤프를 남기도록 설정할 수 있습니다. https://msdn.microsoft.com/ko-kr/library/windows/desktop/bb787181(v=vs.85).aspx Collecting User-Mode Dumps - Windows applications Starting with Windows Server 2008 and Windows Vista with Service Pack ..
[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) 사용되는 명령어..
[windows] 윈도우 64bit Driver 서명없이 로드하기
[windows] 윈도우 64bit Driver 서명없이 로드하기
2016.01.1064bit windows driver sign 안타깝지만 64비트 윈도우의 경우 드라이버에 정식 서명이 되어있지 않으면 시스템에 Load할 수 없습니다. MSDN에 보면 다음과 같이 나와있습니다.서명된 장치 드라이버는 Windows의 주요 보안 기능입니다. x64 기반 컴퓨터에 설치된 드라이버에는 디지털 서명이 있어야 합니다. 디지털 서명이 필요하지 않더라도 x86 기반 컴퓨터에 드라이버를 설치하기 전에 드라이버가 서명되어 있는지 확인하는 것이 좋습니다.부팅에 필요한 모든 드라이버에는 포함된 서명이 있어야 합니다. PnP(플러그 앤 플레이) 드라이버에는 디지털 서명이 필요하지 않습니다. 그러나 실행 중인 운영 체제에 서명되지 않은 PnP 드라이버가 설치되어 있을 경우에는 관리자 자격 증명이 필요하며 64..
[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..
visual studio 디버깅시 디스어셈블리 확인하기
visual studio 디버깅시 디스어셈블리 확인하기
2015.12.31Disassembly Visual Studio를 이용하여 프로그램을 디버깅 하는 경우 필요에 따라 Disaasembly를 파악해야할때가 있습니다.일반적으로 exe를 디버깅 하는 경우엔 IDA, OllyDbg 등을 이용하지만 개발중에 필요한경우 다음과 같은 설정으로 이용하실 수 있습니다. 1. Visual studio에서 Tools -> Options 에 들어갑니다. 2. Debugging -> General에서 Enable address-level debugging 이 체크가 되어있어야 Disassembly 기능을 사용할 수 있습니다. 설정이 잘 되었는지 테스트를 해보겠습니다. NOTE Disassembly를 확인하기 위해선 조건이 필요합니다.* 현재 Debugging 중이거나 Break Mode 여야 ..