티스토리 뷰

반응형

NDIS 드아리버는 보안을 공부하는 사람에게 아주 중요하다. NDIS 드라이버를 이용해 네트워크 패킷을 확인할 수 있기 때문이다. WinPcap을 이용해서도 패킷을 볼 수 있지만 내부 로직을 알기위해서는 NDIS 드라이버의 개념이 꼭 필요핟. 이번 컬럼에서는 NDIS 드라이버에 대한 개론과 패킷을 제어하기 위한 NDIS Intermediate 드라이버와 윈도우 드라이버 개발 환경구축에 대해 알아보도록 하겠다.

정경호(moltak@gmail.net), 전종오(ringopow@ lycos.co.kr)|필자들은 현재 광주 삼성소프트웨어 멤버십 회원이다. 작년에 처음 만났지만 서로 잘 통해서 현재까지 프로젝트를 계속 같이 수행하고 있다. 필자들은 보안, Windows Driver 개발에 관심이 많고 2010 마이크로소프트에서 주관하는 Imagine Cup Embedded 분야에서 “Poom” 이란 프로젝트로 국내 선발전에서 아쉽게 2위를 수상하였다.

우리가 사용하고 있는 네트워크 환경은 상호간의 신뢰를 기반으로 많은 양의 정보를 주고받고 있다. 그러나, 최근 이러한 네트워크 환경은 악의적인 사용자에 의해 다양한 방법으로 공격받고 있다.

대표적인 공격 방식은 보안에 취약한 시스템을 통해 악성코드가 유입되는 경우나, 사용자가 웹 사이트에 접속하는 것만으로도 자동으로 악성코드가 다운로드되는 경우 등 다양한 형태로 나타나고 있다.

지난 2009년 7월 7일부터 10일까지 4일에 걸쳐 발생된 일명 ‘7.7 DDoS 대란’은 청와대를 비롯해 주요 정부기관 홈페이지와 대형 포털사이트, 금융권, 쇼핑몰 등 국내의 주요 홈페이지들이 타깃이 되어 벌어진 대표적인 보안 사고였으며, 앞서 설명한 공격 방식의 대표적인 예다.

이처럼 우리는 DDoS 대란으로 인해 큰 혼란이 빠졌었고, 1년여가 지난 현재까지도 언젠가 다시 제 2, 제 3의 대란이 일어날 지도 모른다는 불안에 떨고있다.

<화면 1> DDoS 공격의 개요

<화면 1>으로 본 7.7 DDoS 공격은 수많은 PC사용자들이 자신도 모르는 사이에 악성코드에 감염되어 좀비PC로 활동하면서, 다른 사이트를 공격하고 있는 것을 볼 수 있다.

좀비 PC들의 DDoS 공격으로 인해 1차에 26개, 2차에 16개, 3차에 7개 사이트를 마비시켰으며, 좀비 PC가 된 개인 사용자의 PC또한 자폭코드로 인해 HDD에 저장된 개인 데이터 또한 손상되는 결과를 가져왔다.
7.7 DDoS대란 당시의 피해액은 수백억원에 달하며, 그로인해 네트워크 보안은 더욱 중요시 되어가고 있다. 또한 현재까지도 제 2의 DDoS대란 방지를 위해 다양한 연구가 활발하게 진행되고 있다. 지금부터 설명하게 될 내용 또한 이를 위한 다양한 연구방법 중 하나다.

본 컬럼에서는 PC 사용자의 대부분이 이용하는 OS인 윈도우에서 NDIS를 이용한 패킷분석과 이를 관리할 수 있는 개발법에 대해 알아보도록 하겠다.

NDIS란 무엇인가
NDIS(Network Driver Interface Specification)는 MS와 쓰리콤(3COM)이 단일 NIC(Network Interface Card : 우리가 사용하는 랜카드 디바이스)상에서 여러 가지의 프로트콜 스택을 동시에 지원하기 위해 만든 계층형 네트워크로 NIC 드라이버가 하층의 네트워크 인터페이스 카드, 상위층의 프로토콜 드라이버, OS와 통신하기 위한 인터페이스를 정의하고 있다.

즉, NDIS NIC 드라이버를 이용할 경우 NDIS를 통해 하위의 NIC와 링크시키는 상위의 드라이버를 무수히 지원할 수 있으므로 일종의 라이브러리로 생각할 수 있다.

NDIS Driver를 개발하기 위해서는 WDM에 대한 기본지식이 필요한데, 이는 NDIS Driver도 WDM의 한 종류이기 때문이다.

많은 독자들이 OSI 7계층에 대해 들어보았을 것이다. OSI 7계층은 표준화 기구인 ISO에서 제시한 네트워크 모델이다. OSI는 네트워크 구성에 대한 권고안으로 OSI 참조 모델을 따르는 네트워크는 서로 다른 기술로 구성된 네트워크라 할지라도 통신을 가능하게 할 수 있다. 윈도우 또한 OSI 참조 모델을 따르고 있는데, NDIS 구조를 알기 위해서는 윈도우의 네트워크 계층 대한 이해가 필요하다.

윈도우는 <그림 1>과 같이 OSI 7계층을 따르는 네트워크 계층 가진다. NDIS는 데이터 링크 계층에 존재하는 것을 알 수 있다. NDIS는 윈도우상에 Ndis.sys로 정의되어 있으며, Ndis.sys가 로딩되지 않을 경우에는 네트워크를 사용할 수 없다. 각각의 프로토콜 드라이버 또한 Tcpip.sys 등과 같은 시스템 파일로 정의되어 있는 것을 알 수 있다.

<그림 1> 윈도우 네트워크 레이어

NDIS를 개발할 때는 개발하는 운영체제에 따라 다르다. 현재 최신 버전은 윈도우비스타 용으로 나온 6.0이며, 윈도우XP 의 경우에는 5.x 버전을 이용해 개발한다.

각 버전에 따른 사항은 http://www.microsoft.com/hwdev를 통해 살펴볼 수 있다.

NDIS 아키텍처
<그림 2>에서 나타났듯이, NDIS는 총 3개 계층으로 구성되며 가장 하단에는 NIC를 제어하는 미니포트 드라이버와 TCP/IP, IPX 등의 프로토콜을 구현해 놓은 프로토콜 드라이버, 그리고 그 사이에 존재하는 인터미디엇 드라이버로 구성된다.

<그림 2> NDIS 아키텍처

각각의 드라이버에 대해서는 이후에 더 자세히 다루겠지만, 간단히 설명하면 미니포트 드라이버는 NIC 개수마다 존재하며 직접 하드웨어를 제어하는 역할을 수행하고 물리계층을 관리하는 역할을 맡는다.

프로토콜 드라이버는 하드웨어와 독립적으로 구현할 수 있으며, NDIS 인터페이스를 통해 하위의 미니포트 드라이버나 인터미디엇 드라이버와 통신이 이뤄진다. 또한 상위의 TDI 계층과 연결되어 있으며 TCP/IP 등의 프로토콜 등이 정의되어 있다. 또한 프로토콜 드라이버는 임의로 개발자에 의해 추가될 수 있는데, 추가 시에는 기존의 프로토콜 드라이버를 대체하는 것이 아니라 병렬적으로 추가된다.

인터미디엇 드라이버는 필수적인 요소가 아니라 개발자가 독립적으로 추가할 수 있다. 프로토콜 드라이버와 미니포트 드라이버 사이에 위치함으로써 패킷을 임의로 가공할 수 있으므로 주로 필터링 역할을 수행한다.

NDIS를 이용한 네트워크 모니터링 방법
TDI 계층과 NDIS 계층은 커널모드로 동작한다. 커널모드에서 네트워크를 모니터링하기 위해서는 패킷 캡처가 필수적이다. 또한 이를 위해서6 TDI 계층에서 TDI 필터를 개발하거나 NDIS 프로토콜 드라이버를 개발하는 방법이 있다.

우선 TDI 필터를 개발할 경우에는 패킷 캡처를 통해 IP, Port, 애플리케이션 프로토콜(TCP 이후의 데이터)를 얻을 수 있으며 모니터링, 변조, 차단 등의 역할을 수행할 수 있다. 그러나 TDI Filter는 커널모드 최상위에 존재하기 때문에 한계가 발생하기도 한다.

또 다른 방법으로는 NDIS 프로토콜 드라이버를 개발할 경우 이더넷 헤더, IP 헤더, TCP 헤더, 애플리케이션 프로토콜까지 모든 로우 패킷에 대한 정보를 얻을 수 있으므로 보다 자세한 모니터링이 가능하다. 모니터링이 가능한 이유는 수신시에 미니포트 드라이버가 상위의 모든 프로토콜 드라이버에게 수신된 패킷을 전송해 주기 때문이다.

그러나 직접적인 변조 및 차단은 할 수 없다. 그 이유는 NDIS 프로토콜 드라이버를 개발할 경우 기존의 TCP/IP 프로토콜 드라이버를 대체하는 것이 아니라, 수평적으로 추가되는 형식으로 이뤄지기 때문이다.

즉, 수신되는 패킷은 NDIS 인터페이스를 통해 얻어올 수 있으나, 송신되는 패킷은 기존의 TCP/IP 프로토콜 드라이버를 통해서 미니포트 드라이버에 전송이 되므로 다른 프로토콜 드라이버가 이를 차단할 수 없다.

<그림 3> 프로토콜 드라이버 패킷 흐름

<그림 3>에서 아래쪽을 향한 화살표는 송신 패킷의 흐름이고, 위로 향하는 화살표는 수신 패킷의 흐름이다. 프로토콜 드라이버 계층을 보면 기존 MS에서 구성해 놓은 TCP/IP 프로토콜 드라이버와 IPX/SPX 등 기존 프로토콜 드라이버가 존재함을 알 수 있다. 개발자가 임의로 유저(User)라는 프로토콜 드라이버를 추가할 경우 <그림 3>과 같이 추가된다.

상위계층에서 TCP/IP 프로토콜로 송신패킷이 발송되면 TCP/IP 프로토콜 드라이버를 통해 직접 미니포트 드라이버에 전달이 되고 미니포트 드라이버가 NIC로 전송하는 것을 볼 수 있다. 그렇기 때문에 프로토콜 드라이버에서는 모니터링만 가능하고 전송되는 패킷의 가공이나 필터링을 수행하기 힘들다.

패킷이 수신되는 경우는 NIC에서 수신되는 패킷이 있을 때인데, 미니포트 드라이버가 이를 받아서 상위 계층의 모든 프로토콜 드라이버에 전송하기 때문에 개발자가 임의로 추가한 유저라는 이름의 유저라는 프로토콜 드라이버에도 수신된 패킷을 받을 수 있는 것을 볼 수 있다. 우리가 흔히 사용하는 WinPcap은 프로토콜 드라이버를 사용한 경우이다.

네트워크를 관리하기 위해서는 모니터링뿐만 아니라, 송신되는 패킷에 대해서도 제어가 가능해야 하므로 이를 위해서는 NDIS 인터미디엇 드라이버를 개발해야 한다.

인터미디엇 드라이버는 프로토콜 드라이버와 다르게 병렬적으로 추가되는 것이 아니라 미니포트 드라이버와 프로토콜 드라이버의 사이에 위치하기 때문에 송·수신 패킷에 대한 제어가 가능하다.

또 다른 방법은 NDIS 훅 드라이버를 개발하는 방법이다. NDIS 훅 드라이버를 개발과 사용성의 편의로 주로 이용되긴 하나, 윈도우비스타 64bit에서는 패치로 인해 사용할 수 없는 단점이 있다.

훅 드라이버는 NDIS에서 미니포트 드라이버와 프로토콜 드라이버와의 연결을 나타내는 OPEN_BLOCK 이라는 부분이 있는데 이곳에 있는 송·수신 포인터를 후킹하는 것이 NDIS 훅 드라이버다.

NDIS 미니포트 드라이버
미니포트 드라이버는 NDIS 계층에서 가장 최하위에 위치하는 일반적인 이더넷 드라이버로서, NIC를 통해 데이터를 보내고 받는 것을 포함해 NIC를 직접 제어하는 역할을 수행한다.

상위계층의 인터미디엇 드라이버나 프로토콜 드라이버와 인터페이스를 수행하기도 하는데, 특히 이더넷 드라이버이기 때문에 TCP/IP 같은 것은 알 수가 없고, 여기서 볼 수 있는 것은 오직 데이터링크(MAC)과 물리(PHY)계층 뿐이라는 점이 특징이다.

다만 요즘에는 성능 향상을 위해서 TCP 패킷이나 IP 패킷의 체크섬 오프로딩, TCP 세그멘테이션 등을 하드웨어 수준에서 지원하는 경우가 많다.

미니포트 드라이버를 개발하기 위해서는 많은 어려움이 따른다. 일단 개발시에는 하드웨어를 직접 제어해야 하기 때문에 개발할 이더넷 카드에 대한 스펙에 대한 고려가 충분히 이뤄져야 하며, 개발에 대한 자료 또한 많이 부족하기 때문에 WDK를 설치하는데, 이때 NDIS 예제 코드가 같이 설치된다. 때문에 필자는 이 예제를 참조하는 것이 가장 좋다고 추천하고싶다.

미니포트 드라이버의 주요기능으로는 NIC의 초기화와 등록, NIC에 전송할 패킷 전달, NIC에서 수신되는 패킷을 상위 계층인 인터미디엇 드라이버나 프로토콜 드라이버로의 전달, NIC의 제어(어댑터 설정 변경, 종료, 리셋 등)이다.

NDIS는 윈도우네트워크 드라이버 전용으로 만들어진 프레임워크라고 볼 수 있기 때문에 콜백을 잘 맞추기만 하면 된다. 콜백의 기능, 전체적인 콜백 호출 흐름, 각 콜백 안에서 호출해야 할 API들을 파악하는 것이 가장 중요한 부분이다.

미니포트 드라이버는 초기화 작업 NdisMInitializeWrapper를 호출하여 NDIS의 핸들을 얻는 것으로 시작된다.
여기서는 인터미디엇 드라이버에 대한 내용을 다루기 때문에 간단하게 콜백에 대한 소개만 하고 넘어가겠다. 각 콜백의 자세한 내용은 MSDN을 참고하자.

·MiniportInitialize : 네트워크 어댑터가 활성화 되는 경우 호출된다.
·MiniportQuertInformation : 네트워크 어댑터가 초기화 된 직후부터 네트워크 어댑터의 정보를 조회하는 경우 호출된다.
·MiniportSetInformation : 네트워크, 어댑터의 설정값을 조작하는 경우 호출된다.
·MiniportCheckForHang : NDIS에서는 미니포트 드라이버가 정상동작을 하는 것을 체크하는 경우 호출
·MiniportReset : MiniportCheckForHang에서 체크 시 정상 동작을 하지 않을 경우 호출되어 미니포트 어댑터를 리셋한다.
·MiniportReturnPacket : 상위 계층으로 전송한 패킷 버퍼가 이 콜백을 통해 되돌아온다.
·MiniportSendPackets : 상위 계층의 패킷 전송 요청이 있을 경우 호출된다.
·MiniportIsr : 인터럽트 서비스 루틴에서 예약된 작업을 처리할 경우 호출된다.

미니포트 드라이버에서 패킷을 송·수신 할 경우에는 다음과 같은 작업이 수행된다.

Packet 전송
- 전송계층 드라이버가 전송할 패킷 발생
- 전송계층 드라이버가 NDIS 라이브러리의 NdisXxx 함수 호출
- NDIS에 의해 미니포트에서 노출된 적당한 MiniportXxx함수 호출
- 미니 포트에 패킷 전달
- 미니 포트 드라이버에서 적당한 NdisXxx 함수 호출
- NIC에 패킷 포워드

Packet Indicate
- NIC에서 주소화된 패킷 수신
- 하드웨어 인터럽트 발생
- NDIS에서 적당한 MiniportXxx 함수 호출(MiniportSend)
- 미니포트에 인터럽트 전달
- 미니포트에서 데이터 전송 설정
- NdisXxx 함수를 호출하여 바인드된 상위 레벨 드라이버로 수신된 패킷을 인디케이트

인터미디엇 드라이버를 개발하기 위해서는 미니포트 드라이버에 대한 이해도 필요하다. 그 이유는 인터미디엇 드라이버의 Upper Edge가 프로토콜 드라이버에서는 미니포트 역할을 수행하기 때문이다.

NDIS 인터미디엇 드라이버
인터미디엇 드라이버는 미니포트 드라이버와 프로토콜 드라이버 중간에 위치하며, 하위 계층과 상위 계층과 통신을 한다. 필수적인 계층은 아니기 때문에 개발자에 의해 추가될 수 있다.

인터미디엇 드라이버의 주요 기능은 크게 3가지다. 첫째, 다른 네트워크 미디어 사이를 변환하는 작업을 수행한다. 이더넷과 ATM과 같은 서로 다른 전송계층의 패킷을 매핑하는 기능을 수행함으로써 변환 작업을 한다. 예를 들어 NIC가 ATM용이고 프로토콜 드라이버가 이더넷 전송계층을 사용할 경우에는 인터미더엇 드라이버를 추가함으로써 변환 작업을 할 수 있다.

둘째, 패킷 필터링이나 블록킹 기능을 수행한다. 미니포트 드라이버로부터 수신되는 패킷의 정보와 프로토콜 드라이버에서 전달되는 패킷을 우선적으로 읽을 수 있으므로, 관리자의 요구에 따라 패킷을 관리할 수 있다.

셋째, 로드 밸런싱 기능을 수행한다. 예를 들어 하나의 가상 어댑터를 상위 레벨에 노출하여 하나 이상의 NIC로 전송 패킷을 분산 시키는 기능을 할 수 있다.

<그림 4> 인터미디엇 드라이버 구조

<그림 4>에서 보듯이 인터미디엇 드라이버는 크게 Upper Edge와 Lower Edge로 구성된다. Upper Edge는 프로토콜 드라이버인 전송계층 드라이버와 연결이 되고, Lower Edge는 미니포트 드라이버와 연결이 된다. 즉, Upper Edge는 프로토콜 드라이버의 입장에서 보면, 가상의 미니포트 드라이버 역할을 하게 되고, Lower Edge는 미니포트 드라이버 입장에서 보면, 프로토콜 드라이버의 역할을 수행하게 되는 것이다. Upper Edge와 Lower Edge는 다음과 같이 구성된다.

Upper Edge
- 상위의 프로토콜 드라이버와 통신하기 위해 MiniportXxx 노출(Miniport DriverEntry)
- 프로토콜 드라이버는 Intermediate Driver를 미니포트 드라이버로 인식
- 수신 된 패킷을 프로토콜 드라이버(Protocol Driver)로 전달
- 실제 NIC를 관리 하지 않음
- 프로토콜 드라이버가 바인딩 할 수 있는 가상 어댑터 제공 (NIC 역할)

Lower Edge
- 하위의 Miniport Driver와 통신하기 위해 ProtocolXxx 노출(Protocol DriverEntry)
- 미니포트 드라이버는 인터미디엇 드라이버를 프로토콜 드라이버로 인식
- 미니포트 드라이버에서 수신 된 패킷을 우선적으로 수신

<그림 4>에서 보듯이 전송 계층의 하위 단과 연결되는 부분인 인터미디엇 드라이버의 상위 단은 MiniportXxx 를 노출하고 있고 미니포트 드라이버의 상위 단과 연결되는 하위 단에는 ProtocolXxx를 노출하고 있음을 볼 수 있다.

그렇기 때문에 인터미디엇 드라이버를 개발할 경우에는 미니포트 드라이버 뿐 만 아니라 프로토콜 드라이버의 구조 또한 알고 있어야 개발하는데 용이하다고 할 수 있다.

NDIS 프로토콜 드라이버
프로토콜 드라이버는 NDIS 계층에서 가장 위에 있는 드라이버로써 네트워크 프로토콜(TCP/IP, IPX/SPX)과 같은 프로토콜 스택을 실행하는 전송 계층 내 가장 낮은 레벨의 드라이버이다. 프로토콜 드라이버는 병렬적인 구조를 가지며, 임의로 추가 시 앞에서 설명한 봐와 같이 수평적으로 추가된다. 프로토콜 드라이버는 마이크로 소프트에서 기본적인 프로토콜에 대한 드라이버(TCPIP.sys 등과 같은)들을 제공하고 있다.

프로토콜 드라이버의 기능은 어플리케이션에서 전송되는 데이터를 패킷에 복사하고, NDIS 함수를 호출하여 하위 레벨의 드라이버로 전송하는 기능과 하위 레벨에서 수신된 패킷을 받기 위해 프로토콜 인터페이스를 제공하고 수신된 데이터를 적당한 클라이언트 어플리케이션에 전송하는 기능을 수행한다.
프로토콜 드라이버 또한 Upper Edge와 Lower Edge로 구성되어 있다.

Upper Edge
- Intermediate Driver와 Miniport Driver와의 인터페이스 수행
- 패킷 전송 : NdisXxx 함수를 호출
- 패킷 수신 : Protocol DriverEntry노출 (ProtocolXxx)
- 하위 레벨의 드라이버에 유지된 정보를 읽고 설정하고 OS 서비스를 사용

Lower Edge
- 하위의 Miniport Driver와 통신하기 위해 ProtocolXxx 노출(Protocol DriverEntry)
- 미니포트 드라이버는 인터미디엇 드라이버를 프로토콜 드라이버로 인식
- 미니포트 드라이버에서 수신 된 패킷을 우선적으로 수신

NDIS 개발 환경 구축
NDIS 드라이버를 개발하기 위한 환경은 WDM이나 WDF의 개발환경을 구축하는 것과 같다. 앞서 설명했듯이 NDIS 드라이버는 WDM 드라이버의 한 종류이기 때문이다.

필자가 사용하는 개발 환경은 윈도우 XP를 기반으로 설명할 것이며, 아래 내용중 경로를 설정해야하는 모든 부분은 전부 공백이 포함되지 않는 경우여야 한다.

비주얼 스튜디오 2008과 WDK의 환경 구축
개발 환경을 구축하기 위해 필요한 가장 첫 번째 작업은 WDK를 다운받아서 설치하는 것이다. WDK는 현재 최신 버전이 7.x 버전이며 다음의 링크를 통해 다운로드받을 수 있다.

www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=36a2630f-5d56-43b5-b996-7633f2ec14ff

설치법은 다운받은 가상 이미지를 로드하여 인스톨하면 된다. WDK를 설치 한 후에는 ddkbuild.bat 파일이 필요하다.

<화면 2> ddkbuild.bat

이 파일은 www.hollistech.com/Resources/ddkbuild/ ddkbuild3_13.zip를 통해 다운 받을 수 있다. 파일을 다운 받은 후 메모장 등을 통해 ddkbuild.bat 파일을 열어보면 <화면 2>와 같이 구성되어 있다. XP일 경우에는 <화면 2>에 빨간 박스 부분의 환경 변수를 추가해 주어야 한다. 물론 윈도우에서 내컴퓨터(속성) → 고급 → 환경변수(시스템 변수)에 추가해줘도 상관이 없다.

다음으로 비주얼 스튜디오 2008를 실행시킨 후 프로젝트 생성을 아래의 순서에 따라 생성한다.

<화면 3> 비주얼 스튜디오 2008 설정 프로젝트 생성

확인을 선택한 후 디버그 구성 설정에서는 <화면 4>와 같이 ddkbuild.bat 파일을 설정한다.

<화면 4> 빌드 옵션 설정

<화면 4>는 ddkbuild.bat를 가지고 컴파일하기 위한 설정이다. 여기서 -XP는 XP환경이라는 뜻이다. checked 옵션은 WDK 컴파일에는 디버그 모드와 릴리즈 모드가 있는데 checked 옵션을 사용할 경우에는 디버그 모드라는 뜻이다. -cZ 옵션은 컴파일 후 만들어진 부가적인 파일들을 모두 지우고 다시 빌드할 때 사용되는 옵션이다.

XP 환경이 아니거나 다른 빌드 옵션을 추가하고 싶을 경우에는 www.hollistech.com/Resources/ddkbuild/ddkbuildhelp3 _13.htm를 참조해 추가하면 된다.

프로젝트 생성이 완료된 후에는 도구 → 옵션 → 프로젝트 및 솔루션 → VC++ 디렉토리로 가서 <화면 5>,<화면 6>과 같이 설정한다. 이 설정은 설치한 WDK의 라이브러리를 이용하기 위한 설정이다.

<화면 5> WDK 헤더 파일 경로 설정

<화면 6> WDK 라이브러리 파일 경로 설정

여기까지 비주얼 스튜디오 2008에서 NDIS 드라이버 개발을 위해 설정할 수 있는 기본적인 환경구축에 대한 설명이 끝났다. NDIS는 다시 말하지만 WDK의 한 종류이기 때문에 WDK의 기본 구조를 모르는 상태에서는 개발할 수 없다. WDK에 대해서는 기본적으로 따로 공부를 해야한다는 점을 강조하고 싶다.

이번 컬럼에서는 NDIS 드라이버란 무엇인지와 각 드라이버들의 기능과 역할에 대해서 설명하였다. 다음 컬럼에서는 인터미디엇 드라이버를 어떻게 개발하는지에 대한 방법에 대해 설명할 예정이므로 독자들은 WDK에 대한 기본 지식을 습득하는 것이 따라오는데 큰 도움이 될 것이다.


원문: http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=35970

윈도우에서의 NDIS드라이버 개발을 목표로 하고 있는데 위 자료가 큰 도움이 될 것 같다.
일단은 선행으로 WDK에 대한 공부를 해야할것 같다.

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함