[펌] WinDbg를 이용해서 컴파일 후 파일 debuggee로 자동 복사하기

드라이버를 개발하면서 WinDbg 로 커널 디버깅을 할 때 가장 귀찮은 작업중 하나가 Debugger(개발시스템)에서 드라이버를 빌드한 후에 이것을 Debuggee (테스트시스템)로 복사해줘야 한다는 것입니다. 이것을 해결해 주는 편리한 명령어가 있었으니 바로 .kdfiles 입니다. .kdfiles (Set Driver Replacement Map).kdfiles command 는 맵파일을 읽어서 그 내용에 있는 대로 Debugger 시스템에 있는 드라이버 파일을 Debuggee 시스템에 복사하게 합니다. [Syntax].kdfiles MapFile [...]

드디어 키보드 데이터 얻어내기 성공!!!

므흣!!! 간단하지만 키보드 입력 데이터 가져왔당!!! 쿠쿠 <ntddkbd.h> 헤더 파일에 PKEYBOARD_INPUT_DATA 구조체가 있었다… 그래서 그냥 irp->AssociatedIrp.SystemBuffer 값을 그냥 저 구조체 변수에 넣어주면 된다. 유유 유유 디버거에서 Hook Done Dispatch에 뷁포인트 걸고서 디버기에서 메모장 열고 ‘a’ 를 입력하면 뷁포인트 건 곳에 멈춰지고, …….else if ( irp->AssociatedIrp.SystemBuffer )  {        pBuffer = irp->AssociatedIrp.SystemBuffer;       [...]

음… Attach하는데 완전 오래걸렸네…

윽 엄청난 삽질로… 완전 포기 단계 까지 갔다가… 막판에 저번에 사용하던 심볼링크이름으로 디바이스포인터 얻어오는 방법을 했더니만… 오오케이!!! 쿠쿠 이제… 필터 디바이스로 통해 들어오는 정보들 처리하면 되겠군… 아… 부족해… 실력이.. 유유 유유 //////////////////////////////////////////////////////////////////////////// AttachDevice 함수// GUIDeviceObject : GUI Device 포인터를 받아들이는 인자// 기능 : Keyboard Device에 Keyboard Filter Device를 붙여준다.BOOLEAN AttachDevice ( IN PDEVICE_OBJECT GUIDeviceObject ){ NTSTATUS [...]

Keyboard Filter Driver 스타토~~~~

처음에는 마우스와 키보드의 필터드라이브를 같이 구현하려고 했는데… 예전에 파일시스템 필터드라이브 만들때는 L”\\DosDevices\\D:\\” 이런 디바이스 링크이름을 알아서 링크와 관련되 디바이스 포인터를 얻어 올 수 가 있었는데… 키보드랑 마우스 링크이름을 몰라서 필터 드라이브를 붙일 디바이스 포인터를 얻어 올 수 없다 유유 방법이 있긴 있을텐데.. 워낙 자료가 부족하다보니… 그래서 우선 키보드 필터드라이버 하나만 구현하고자 시작했다… 초반에 드라이버 제작 [...]

WinDbg 약간의 명령어들~~~

.hh : 도움말 파일을 부른다ex) .hh xx : 도움말이 열리면서 xx 에 대한 설명을 보여준다 .chain : 로드된 확장 DLL을 보여준다.load : 확장 DLL을 로드한다.unload : 확장 DLL을 언로드한다.unloadall : 모든 확장 DLL을 언로드한다 !process : 프로세스 정보 보기ex) !process 0  => 모든 프로세스 보기      !process 0 4  => 쓰레드 포함 모든 프로세스 [...]

오홋!!! 조금씩 WinDbg의 위력을…. .오오오오오오오~~~

오홋!!! 깔아놓고… 사용법을 찾아서 이리저리 헤매다가 조금씩 사용법을 익혀가고 있다. 디버기에서 내가 만든 SFFD 드라이버 올리고서, 시작하고나서 Windbg거에서 Ctrl + Break으로 디버기를 잡아놓는다. 그리고 x 명령어로 로드된 심볼들을 확인!!! 0: kd> x <드라이버명>!* 0: kd> x SFFD!*f87501ac SFFD!ConfigPath = struct _UNICODE_STRING “D:\conf\”f8750094 SFFD!__security_cookie_complement = 0xffff44bff874f0f4 SFFD!KeTickCount = struct _KSYSTEM_TIMEf8750018 SFFD!DecryptData = 0xf874c070f8750124 SFFD!HashTable = 0x00000000f8750290 [...]

자자!! 이제 VMWARE도 깔았겠다… WINDBG를 깔아 봅시다 쿠쿠

오호!!! 작동은 한다 ㅡ.ㅡ;;; 그러나 사용법은 아직 잘 모른다 쿠쿠 하나하나 익혀나가야지~~~ 쿠쿠 설레여 막 요래!!——————————————————————————————————————————————–WINDBG 최신버전 받는 곳 : http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx 참조 할 사이트 : http://snoya.ye.ro/driver/windbg/windbg.html                                http://www.codeproject.com/debug/windbg_part1.asp <= WINDBG 사용법!!!                       [...]

두번째 과제… 로더와 시뮬레이터…

흠 요번에는 과제를 페이퍼로 출력해서 주셔서…. 은근히 긁어오기도 힘들고… 쿠쿠 첫번째 프로젝트에서 SIC/XE 어셈블러를 만들고 어셈블해서 생긴 오브젝트 파일을… 메모리에 올리고… 존재하지 않는  SIC/XE머신때문에 기존 컴퓨터에서 돌려 볼 수 있도록 하는 시뮬레이터 만들기…. 흠.. 요즘 일상의 70~80%를 투자 하고 있는데..  내 돌탱이 머리가… 고생하네… ㅎㅎ 그래도 조금씩 성과가 있으니 할만하지… 아니면…. 컴퓨터와 내 돌탱이 중 [...]

첫 번째 프로젝트…. 흠..

프로젝트 1은 SIC/XE 머신의 어셈블리를 작성하는 것입니다. 그림 2.15 (Control Section)를 입력으로 받아서 그림 2.17을 출력으로 만들어야 합니다. 첨부한 안내서를 참조하여 코드를 작성하기 바랍니다. 프로그램 설명서, Source File (1면에 2장씩 출력), input/output 파일을 포함하여야 합니다. 최종 마감은 5월 10일까지 입니다. (수요일 수업반은 오전 10시반까지 정보과학관 526호로 제출해주기 바랍니다.) 프로젝트 가이드 프로젝트1 보고서 프로젝트1 Source ———————————————————————- [...]

두번째 숙제…

그림 2.5를 입력으로 받고, Mnemonic Code를 Opcode로 변환시키는 프로그램을 완성하시오. (C 프로그램으로만 작성!! LEX를 사용해도 됩니다.) 1. OPTAB을 작성 2. 입력 파일: 그림 2.5를 파일로 입력받으시오. 3. 출력파일: Intermediate 파일을 만들고(그림 2.6) opcode부분만 출력 4. 보고서에 있어야 할 내용 프로그램 설명, comment가 포함된 프로그램 소스, 결과 출력 5. 제출일 4월 4/5일 수업시간까지 두번째 숙제 보고서