Category: 시스템프로그래밍
드라이버를 개발하면서 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; […]
윽 엄청난 삽질로… 완전 포기 단계 까지 갔다가… 막판에 저번에 사용하던 심볼링크이름으로 디바이스포인터 얻어오는 방법을 했더니만… 오오케이!!! 쿠쿠 이제… 필터 디바이스로 통해 들어오는 정보들 처리하면 되겠군… 아… 부족해… 실력이.. 유유 유유 //////////////////////////////////////////////////////////////////////////// AttachDevice 함수// GUIDeviceObject : GUI Device 포인터를 받아들이는 인자// 기능 : Keyboard Device에 Keyboard Filter Device를 붙여준다.BOOLEAN AttachDevice ( IN PDEVICE_OBJECT GUIDeviceObject ){ NTSTATUS […]
처음에는 마우스와 키보드의 필터드라이브를 같이 구현하려고 했는데… 예전에 파일시스템 필터드라이브 만들때는 L”\\DosDevices\\D:\\” 이런 디바이스 링크이름을 알아서 링크와 관련되 디바이스 포인터를 얻어 올 수 가 있었는데… 키보드랑 마우스 링크이름을 몰라서 필터 드라이브를 붙일 디바이스 포인터를 얻어 올 수 없다 유유 방법이 있긴 있을텐데.. 워낙 자료가 부족하다보니… 그래서 우선 키보드 필터드라이버 하나만 구현하고자 시작했다… 초반에 드라이버 제작 […]
.hh : 도움말 파일을 부른다ex) .hh xx : 도움말이 열리면서 xx 에 대한 설명을 보여준다 .chain : 로드된 확장 DLL을 보여준다.load : 확장 DLL을 로드한다.unload : 확장 DLL을 언로드한다.unloadall : 모든 확장 DLL을 언로드한다 !process : 프로세스 정보 보기ex) !process 0 => 모든 프로세스 보기 !process 0 4 => 쓰레드 포함 모든 프로세스 […]
오홋!!! 깔아놓고… 사용법을 찾아서 이리저리 헤매다가 조금씩 사용법을 익혀가고 있다. 디버기에서 내가 만든 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 […]
오호!!! 작동은 한다 ㅡ.ㅡ;;; 그러나 사용법은 아직 잘 모른다 쿠쿠 하나하나 익혀나가야지~~~ 쿠쿠 설레여 막 요래!!——————————————————————————————————————————————–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일 수업시간까지 두번째 숙제 보고서
Due Date 3/26일 1. 학번을 5로 나누어서 남은 숫자가 m이라면, m=0, CrayT3E; m=1, PowerPC; m=2, UltraSPARC; m=3, Intel x86; m=4, VAX Powerpoint로 정리해서 제출하시오. 메모리스틱으로 가져와서 발표 준비하세요. 2. 1장 연습문제 2, 3, 10, 11번을 정리해서 제출해주세요. 숙제HW1HW1보고서 UltraSPARC PPT