Security ★ Development/Windows Driver(4)
-
드라이버 개발 시작
이번에 루트킷을 하면서 드라이버 프로그래밍을 하게 되었습니다. 지난번에 NDIS, WFP 관련해서 개발 포스팅을 했었는데 네트워크 드라이버가 아닌 드라이버의 경우 어떻게 시작해야되는지에 대해 정리해보려합니다. 환경 구축은 이전 글을 참고하시면됩니다. 시작프로젝트는 WDF의 Kernel Mode Driver (KMDF)로 합니다. Driver.c 파일에 보면 DriverEntry이 있고 그 외 몇몇 파일이 만들어져 있습니다. 타겟 머신에 제대로 실행이 되는지 확인해볼 것이기 때문에 DriverEntry 함수 내에 DbgPrint()를 사용하여 로그를 찍어보도록 합니다. 또 한 군데, OnUnload()에서도 찍어보는데 이 함수는 기본값으로 만들어져있지 않습니다. DriverEntry()위에 다음과 같이 정..
2015.11.01 -
WFP Driver programming
이번에는 WFP(Windows Filtering Platform)에 대해 간단하게 정리해보겠습니다. WFP는 NDIS의 다음 버전으로 네트워킹 스택에서 발생하는 여러 정의된 이벤트에 Callout이라는 것을 걸어서 이벤트 핸들링 처럼 처리하는 방식입니다. 자료는 NDIS보다 훨씬 더 부족합니다. 구글에서 wfp라고 검색하면 유엔세계식량계획이 먼저 나오고 wfp or wndows filt... 풀네임과 기타 키워드를 같이 검색하면 페이지조차 얼마 안됩니다. 처음 막 할때는 막막했습니다... ㅎㅎ NDIS는 네이버 블로그라도 좀 있는데 WFP는 전멸. ... NDIS와 마찬가지로 MSDN의 Windows Filtering Platform Sample을 토대로 진행하겠습니다. 그럼 간략하게 WFP의 작성방식부..
2015.03.19 -
NDIS 6.0 Filter Driver programming
NDIS를 통한 프로젝트를 진행하면서 그나마 최신 국내 NDIS 프로그래밍 포스팅이 없어서 간략하게 정리를 하려고합니다. 더 상세하게는 필요하다고 생각되면 따로 포스팅하겠습니다. 또한 저도 학생의 신분으로 이쪽으로 깊게 공부한 것은 아니기 때문에 잘못된 부분이 있으면 알려주시면 감사하겠습니다. NDIS에 대한 개념적인 소개는 생략하겠습니다. MSDN의 NDIS 6.0 Filter Driver Sample을 바탕으로 진행합니다. 우선 NDIS를 통해 할 수 있는 건 윈도우 7에서는 MAC address부터 payload까지 전부 볼 수 있습니다. WFP는 윈도우8부터 Ethernet을 볼 수 있어서 윈도우7에서 MAC을 보기위해선 NDIS를 이용해야 합니다. 솔루션을 열면 주로 filter.c를 수정하게 ..
2015.03.13 -
윈도우 커널 드라이버 개발 디버깅 환경 구축
윈도우 커널 드라이버(NDIS) 개발을 하기위한 디버깅 환경 구축 과정을 정리하려합니다. 찾아보면 옛날 ddk와 순수 windbg를 이용한 디버깅 환경이 많이 나옵니다. 저는 최신 비주얼 스튜디오인 2013과 윈7, 그리고 vmware를 이용한 디버깅 환경을 설명하겠습니다. 이렇게 구축을 해놔도 어떤 윈도우 프로그래밍 혹은 웹 프로그래밍보다도 개발 속도가 느립니다. 안드로이드보다도 느리다고 자부할 수 있습니다. 드라이버 개발에 특별한 디버깅 환경이 필요한 이유는 커널에 수정, 작업을 반영하기 때문에 운영체제가 불안정해질 수 있습니다. 본래의 노트북이나 데스크탑에 설치된 운영체제에 그대로 디버깅을 수행하면 개발한 드라이버에 문제가 있을 시 컴파일 에러, 런타임 에러만 내놓고 끝나는게 아니라 해당 운영체제를..
2014.12.26