Red de conocimiento informático - Conocimiento informático - Pescando solo en el río frío: una lista de libros sobre programación de seguridad del kernel de Windows

Pescando solo en el río frío: una lista de libros sobre programación de seguridad del kernel de Windows

Capítulo 1 Guía de la computadora del kernel 1

La programación del kernel de Windows es un poco problemática. No es posible instalar software independiente (como VC) y luego comenzar a escribir código y ejecutarlo con confianza. Debe descargar el paquete de desarrollo, configurar el entorno de desarrollo, preparar herramientas de depuración y tal vez algunas herramientas pequeñas para trabajar con él. Este paso impide que muchos principiantes sigan adelante. Este capítulo utiliza estrategias gráficas detalladas para guiar a los lectores a través de este paso problemático.

Descarga y usa WDK 2 en 1.1

Descarga e instala WDK 2 en 1.1.

1.1.2 Escribir el primer archivo C 3

1.1.3 Compilar un proyecto 5

1.2 Instalación y funcionamiento 6

1.2 .1 Descargar e instalar herramientas 6

1.2.2 Ejecutar y ver información de salida 7

1.2.3 Ejecutar en una máquina virtual 9

1.3 Depurar el kernel Módulo 9

1.3.1 Descargar e instalar WinDbg 9.

1.3.2 Configurar la ejecución de depuración de Windows XP 10

1.3.3 Configurar la ejecución de depuración de Vista 11

1.3.4 Configurar el puerto serie virtual de tubería de VMWare 11.

1.3.5 Configurar la tabla de símbolos del kernel de Windows 13

1.3.6 Primero la depuración real 14

Ejercicio 16

Capítulo 2 Entorno de programación del kernel y sus particularidades 17

Los lectores que hayan escrito controladores pueden estar familiarizados con todo esto, pero para los lectores que solo se han dedicado a aplicaciones, para comprender las particularidades del entorno de programación del kernel, también necesitan a una cierta cantidad de esfuerzo y comprensión. En las aplicaciones, los subprocesos múltiples plantean algunas dificultades de comprensión; ¿qué pasa con el código del núcleo? Casi siempre se ejecuta con subprocesos múltiples. ¿Por dónde empezar? ¿Dónde termina? ¿En qué proceso se ejecuta? Estas preguntas son una larga historia.

2.1 Entorno de programación del kernel 18

2.1.1 Aislar aplicaciones 18

2.1.2 ***Espacio del kernel 19

2.1. 3 Módulo de kernel universal 20

2.2 Tipo de datos 21

2.2.1 Tipo de datos básicos 21

2.2.2 Estado de retorno 22

Cadena 23

2.3 Estructuras de datos importantes 23

2.3.1 Objeto controlador 23

Objeto dispositivo 25

Solicitud 26

2.4 Llamada a función 28

Ayuda de referencia 28

Algunas funciones en 2.4.2 Ayuda 30

2.4.3 Ayuda Sin funciones 32

2.5 Modelo de desarrollo de controladores de Windows 32

2.6 Puntos especiales en la programación 33

2.6.1 Fuente de llamada principal de la programación del kernel 33

2.6.2 Multi -seguridad de subprocesos de la función 34

Nivel de interrupción del código 36

2. 6. 4 Código especial 37 que aparece en WDK

Ejercicio 38

Capítulo 3 Filtro de puerto serie 40

En el desarrollo de software de seguridad, la aplicación de controladores de puerto serie no es común. Pero este libro utiliza el controlador del puerto serie como primer ejemplo. ¿Por qué? Simplemente porque el puerto serie es simple. Comenzar con un ejemplo sencillo puede darle al lector una pequeña sensación de relajación.

El concepto de filtrar 41 en 3.1

Una de las API del kernel vinculadas al dispositivo 3.1.1 es 41.

3.1.2 Device Binding Kernel API II 43

3.1.3 Generación de dispositivos de filtro y enlaces 43

3.1.4 Obtención de objetos de dispositivo a partir del nombre 45

3.1.5 Vincular todos los puertos serie 46

3.2 Obtener datos reales 47

3.2.1 División de solicitud 47

3.2 .2Resultado de la solicitud 48

3.2.3 Escribir datos solicitados 49

3.3 Código completo 50

3.3.1 Función de distribución completa 50

3.3.2 Cómo desinstalar dinámicamente 52

Código completo 53

Código de muestra 53 en este capítulo

Ejercicio 54

Capítulo 4 Filtrado de teclado 56

¡El teclado es un dispositivo de entrada muy importante! Esto se debe a que usamos teclados para ingresar información, usamos teclados para ingresar contraseñas, incluso usamos teclados para programar y usamos teclados para escribir libros. Es más fácil para los piratas informáticos utilizar enormes recursos informáticos para descifrar esos algoritmos de cifrado indestructibles que escribir en secreto las claves introducidas por los usuarios en el teclado. Este capítulo se centra en la protección del teclado.

4.1 Principios técnicos 57

4.1.1 Conocimientos previos 57

4.1.2 De las claves al kernel en Windows 58

4.1. 3 Principios del hardware del teclado 60

4.2 Marco de filtrado del teclado 61

4.2.1 Buscar todos los dispositivos de teclado 61.

4.2.2 Extensión del dispositivo de aplicación 64

4.2.3 Entrada del controlador del módulo de filtro de teclado 65

4.2.4 Desinstalación dinámica del módulo de filtro de teclado 66

4.3 Procesamiento de solicitudes de filtrado de teclado 68

4.3.1 Procesamiento normal 68

4. 3. 2 Procesamiento PNP 69

4.3 .3 Procesamiento de lectura 70

4.3.4 Procesamiento después de la lectura 71

4.4 Imprimir información clave 72 en la solicitud

4.4.1 Del búfer Obtener KEYBOARD_INPUT_DATA 72.

4.4.2 Obtener 73 claves de KEYBOARD_INPUT_DATA.

4.4.3 Del código del fabricante al carácter real 74

4.5 Función de asignación de ganchos 75

4.5.1 Obtener el objeto controlador de clase 76

4.5.2 Modificar el puntero de función distribuida 77 del controlador de clase

4.5.3 Controlador de puerto bajo controlador de clase 78

4.5.4 Entre controlador de puerto y controlador de clase Mecanismo de cooperación entre 79

4.5.5 Condiciones para la función de devolución de llamada de la tecla de búsqueda 80

4.5.6 Definir constantes y estructuras de datos

4.5.7 Abrir dos búsquedas de controlador de puerto de teclado para dispositivo 81.

4.5.8 Búsqueda de direcciones en el controlador de clase KbdClass 83

4.6 Conexión del filtro de interrupción del teclado 86

4.6.1 Interrupciones: IRQ e INT 86

4.6.2 Cómo modificar IDT 87

4.6.3 Reemplazar la dirección de salto IDT 88.

4 . 6 . 4 Medidas antifiltrado PS/2 para QQ 90

4.7 Utilice IOAPIC para reubicar el controlador de interrupciones 90

4.7.1 ¿Qué es? ¿IOAPIC 90?

4.7.2 Cómo acceder a IOAPIC 91

4.7.3 Modificar mediante programación la tabla de reubicación IOAPIC 92

4.7.4 Insertar un nuevo controlador de interrupciones 93 p>

4.7.5 Implementación de entrada y desinstalación de controladores 95

4.8 Uso directo del puerto para operar el teclado 96

4.8.1 Lectura de datos del teclado y puerto de comando 96

4 . 8 . 2 La implementación final de p2cuserfilter 97

Código de muestra en este capítulo 98

Ejercicio 99

Capítulo 5 Virtual Disk 100

La CPU es el núcleo de la computadora, pero no guarda información. Si es robado, podemos comprar uno nuevo. Pero si le roban un disco duro lleno de información confidencial, comprar uno nuevo no lo reemplazará. Este capítulo presenta la magia del núcleo del disco duro: el disco duro virtual. ¿Los ladrones no pueden utilizar los discos duros virtuales? Un buen diseño puede hacer esto.

5.1 Disco virtual 101

5.2 Un ejemplo específico 101

5.3 Función de entrada 102

5.3.1 Definición de función de entrada 102

5.3.2 Función de entrada del controlador de memoria 103

5.4 Función EvtDriverDeviceAdd 104

5. 1 Definición de evtdriverdeviceadd 104

5.4. 2 Declaración de variables locales 105

5.4.3 Creación de un dispositivo de disco 105

5.4.4 Cómo manejar las solicitudes enviadas al dispositivo 107

5.4.5 Inicialización del usuario de configuración 108

5.4.6 Vinculación a la aplicación 110

5.4.7 Resumen 111

5.5 Inicialización del volumen de disco FAT12/16 111

5.5.1 Introducción a la estructura del volumen del disco 111

5.5.2 Inicialización del disco Ramdisk 113

5.6 Procesamiento de solicitudes en el controlador 119

5.6. 119

Solicitud de lectura/escritura 120

Solicitud de control de dispositivo 122

5.7 Compilación e instalación de disco ram 124

5.7 .1 Compilar 124

Instalación 125

Exploración adicional del dispositivo 5.7.3 125

Ejercicio 126

Capítulo 6 Filtrado de disco 127

Muchos propietarios de cibercafés, departamentos de gestión de TI de empresas y los propios lectores odian que los discos duros siempre estén estropeados por virus y troyanos. Un sencillo software de recuperación puede solucionar este problema: después de reiniciar, las modificaciones realizadas en el disco duro desaparecen milagrosamente. ¿Cómo se logra esto? Este capítulo le dice la respuesta.

6.1 El concepto de controlador de filtro de disco 128

6.1.1 Filtrado de dispositivos y filtrado de categorías 128

6.1.2 Controlador de filtro de dispositivo de disco y volumen de disco Programa 128

6.1.3 Controlador de filtro de dispositivo de volumen de disco y registro 129

6.2 Controlador de filtro de volumen de disco con recuperación 129

Introducción 129

6.2.2 Idea básica 130

6.3 Análisis del controlador 130

6.3.1 Función de entrada del controlador 130

6.3.2 Función de agregar dispositivos 132

6.3.3 Procesamiento de solicitud PNP 136

6.3.4 Procesamiento de solicitud de energía 140

6.3.5 Procesamiento de solicitud de control IOC del dispositivo 140

p >

6.3.6 Función y análisis del mapa de bits 144

6.3.7 Función de devolución de llamada de finalización del controlador de arranque y archivo disperso 150.

6.3.8 Procesamiento de solicitudes de lectura/escritura 152

Código de muestra 160

6.3.10 Ejercicio 161

Capítulo 7 Filtrado del sistema de archivos y Monitoreo 162

Un disco duro es un disco duro y un sistema de archivos es un sistema de archivos, pero algunas personas siempre los toman en serio. De hecho, el disco duro es muy simple. El disco duro es una caja muy simple para almacenar información; lo complicado es el sistema de archivos, que organiza inteligentemente datos simples en archivos complejos. Como expertos en seguridad de la información, ciertamente no podemos permitir que los sistemas de archivos escapen a nuestro control.

7.1 Objeto de dispositivo del sistema de archivos 163

7.1.1 Dispositivo de control y dispositivo de volumen 163

7.1.2 Genera tu propio dispositivo de control 165.

7.2 Función de distribución del sistema de archivos 166

7.2.1 Función de distribución común 166

7.2.2 Función de distribución rápida de IO del filtrado de archivos 167

7.2.3 Implementación de la función de asignación rápida de IO 169

7.2.4 Introducción a la función de asignación rápida de IO uno por uno 170

7.3 Preparativos para la agrupación de dispositivos 172

7.3.1 Seleccionar dinámicamente la función de encuadernación 172.

7.3.2 Registrar devolución de llamada de cambio del sistema de archivos 173

7.3.3 Implementación de devolución de llamada de cambio del sistema de archivos 175

Identificador del sistema de archivos 176

7.4 Vinculación de dispositivos de control del sistema de archivos 177

7.4.1 Dispositivos de filtrado para generar dispositivos de control del sistema de archivos 177

7.4.2 Vinculación de dispositivos de control del sistema de archivos 178

7.4.3 Uso de solicitudes de control del sistema de archivos 180

7.5 Vinculación de dispositivos de volumen del sistema de archivos 183

7.5.1 Obtención del puntero VPB del IRP 183.

7.5.2 Configure la función de finalización y espere a que se complete el IRP 184.

7.5.3 Trabajo después del empaquetado IRP 187

7.5.4 Completar la implementación correspondiente de la función 190

7.5.5 Implementar el enlace de los volúmenes 191

7.6 Filtrado de operaciones de lectura/escritura 193

7.6.1 Configuración de una función de procesamiento de lectura 193.

7.6.2 Procesamiento de diferenciación de objetos de dispositivo 194

7.6.3 Analizar la información del archivo en la solicitud de lectura 195

7.6.4 Completar la solicitud de lectura 198

7.7 Filtrado de otras operaciones 202

7.7.1 Ciclo de vida del objeto de archivo 202

7.7.2 Apertura y cierre de archivos 203

Eliminar archivos 205

7.8 Implementación del filtrado de rutas 206

7.8.1 Tres situaciones para obtener rutas de archivos 206

7.8.2 Obtener después de abrir con éxito la ruta 207

7.8.3 Obtener la ruta del archivo 209 en otros momentos

7.8.4 Obtener el nombre de la ruta antes de que se complete la solicitud de apertura 209.

7.8.5 Convertir nombre corto a nombre largo 211.

7.9 compila sfilter en una biblioteca estática 212.

7.9.1 ¿Cómo utilizar sfilter 212 cómodamente?

7.9.2 Devolución de llamada de inicialización, devolución de llamada de desinstalación y devolución de llamada de vinculación 213

7.9.3 Devolución de llamada de vinculación y devolución de llamada 215

7.9.4 Devolución de llamada de solicitud de inserción 216

7.9.5 Cómo usar sfilter.lib 218

El código de muestra en este capítulo es 221.

Ejercicio 221

Capítulo 8 Cifrado transparente del sistema de archivos 223

Cómo evitar que los archivos confidenciales corporativos se filtren activamente sin apagar la red y prohibir las unidades USB , etc. ¿Medios para frenar a todos? Hay muchos indicios de que el cifrado transparente del sistema de archivos es la mejor opción. Ahora que el lector ha aprendido a controlar el sistema de archivos en el capítulo anterior, es hora de que lo utilicemos para proteger nuestra información confidencial.

8.1 Aplicación de cifrado de archivos transparente 224

8.1.1 Prevención de la fuga de información corporativa 224

8.1.2 Cifrado de archivos transparente que evita la fuga de información corporativa 224

8.1.3 Ejemplo de software de cifrado de archivos transparente 225

8.2 Proceso de distinción 226

8.2.1 Proceso confidencial y proceso ordinario 226

8.2. 2 Encuentre la ubicación del nombre del proceso 227

8.2.3 Obtenga el nombre del proceso actual 228

8.3 Mapeo de memoria y almacenamiento en búfer de archivos 229

8.3. 1 Asignación de memoria del Bloc de notas Archivo 229

8.3.2 Búfer de archivos de Windows 230

8.3.3 Búfer de archivos: elija texto sin formato o texto cifrado 232

8.3.4 Borrar File Buffer 233

8.4 Identificación cifrada 236

8.4.1 Guardado fuera del archivo, al principio o al final del archivo 236.

8.4.2 El tamaño del encabezado del archivo oculto 237

8.4.3 Establecer el desplazamiento del encabezado del archivo oculto 239

8.4.4 Lectura del encabezado del archivo oculto encabezado de archivo /Desplazamiento de escritura 240

8.5 Tabla de cifrado de archivos 241

8.5.1 Cuándo cifrar 241

Bloque de control de archivos y objeto de archivo 242

8.5.3 Estructura de datos e inicialización de la tabla de cifrado de archivos 243

8.5.4 Operación de la tabla de cifrado de archivos: Consulta 244

8.5.5 Operación de la tabla de cifrado de archivos: Agregar 245

8.5.6 Operación de la tabla de cifrado de archivos: eliminar 246

8.6 Procesamiento de apertura de archivos 248

8.6.1 Envío directo de IRP para operaciones de consulta y configuración 248.

8.6.2 Envío directo de IRP para operaciones de lectura/escritura 250

8.6.3 Apertura no reentrante de archivos 252

8.6.4 Preapertura de Manejo de archivos 255

8.7 Lectura y escritura de cifrado/descifrado 260

8.7.1 Descifrado durante la lectura 260

8.7.2 Distribución y lanzamiento de MDL 261

Cifrado de solicitud de escritura 262

8.8 ensamblaje crypt_file 265

Inicialización de Crypt_file 265

8.8.2 IRP a crypt_ Preprocesamiento del archivo 266

8 . 8 . 3 Cripta IRP _ Postprocesamiento del archivo 269

Código de muestra 272 en este capítulo

Ejercicio 272

Capítulo 9 Sistema de archivos Controlador de microfiltración 273

Microsoft, que nunca se ha dormido en los laureles, ya ha preparado el marco, los documentos y los ejemplos de código para la próxima generación de filtrado de sistemas de archivos. Aunque los ejemplos de los dos primeros capítulos de este libro se pueden ejecutar normalmente en Windows 7, los lectores se sentirán incómodos si no aprenden la interfaz más reciente. Pero los lectores pueden estar seguros de que es fácil entender la nueva interfaz basándose en investigaciones previas.

9.1 Introducción al controlador de microfiltro del sistema de archivos 274

9.1.1 El origen del controlador de microfiltro del sistema de archivos 274

9.1.2 Microfiltro 275 Ventajas y desventajas

9.2 Marco de programación de Minifilter 275

9.2.1 Registro del filtro del sistema de archivos en miniatura 276

9.2.2 Minifilter 277 Estructura de datos

9.2.3 Función de devolución de llamada de descarga 280

9.2.4 Función de devolución de llamada previa a la operación 281

9.2.5 Función de devolución de llamada posterior a la operación 284

p>

9.2 .6 Otras funciones de devolución de llamada 285

9.3 Cómo se comunican los minifiltros con las aplicaciones 288

Métodos para establecer puertos de comunicación 288

9.3 .2 Ejemplo de uso del puerto de comunicación 290 a través de DLL en modo usuario

9.4 Instalación y carga de minifiltro 292

9.4.1 Archivo INF para instalar minifiltro 293

9.4.2 Iniciar microfiltro instalado 294 .

Código de muestra en este capítulo 295

Ejercicio 295

Capítulo 10 Filtrado de la capa de transporte de red 296

A menudo uso firewalls. Se ven realmente geniales. Si sospecha que un proceso sospechoso en su máquina ha abierto un puerto de red y ha robado información confidencial, el firewall le alertará, aunque no sabe si se trata de un caballo de Troya. ¿Cómo se hace esto? Este capítulo le revela el misterio.

10.1 Resumen TDI 297

10.1.1 ¿Por qué elegir TDI 297?

10.1.2 Del socket al kernel de Windows 297

10.1.3 Ejemplo de código del filtro TDI 299

10.2 Marco del filtro TDI 299

10.2.1 Dispositivo de enlace TDI 299

10.2.2 Función de asignación única 300

10.2.3 Implementación del marco de filtrado 302

10.2 4 tipos de solicitudes principales filtradas. 304

10.3 Generar solicitud: Obtener dirección 305

10.3.1 Filtrar generar solicitud 305

10.3.2 Prepararse para resolver dirección IP y puerto 307.

10.3.3 Obtener la dirección IP generada y el puerto 308.

10.3.4 Generación de borneras y almacenamiento de información relacionada 310

10.4 Solicitud de control 311

Filtrado 10. 4. 1 TDI_asociado_dirección 311

10 4 . 2 TDI _ Connect 313 filtrado

10.4.3 Otro número de subfunción es 314

10.4.4 Establecer filtrado de eventos 316 p>

10 . 4 . 5 TDI _ Evento _ Configuración del tipo de conexión Filtrado de eventos 318

10.4.6 Filtro para acceso directo a la función de envío 320

10.4. 7 Filtrado de solicitudes de limpieza 322

10.5 Ejemplos de aplicación de este libro tdifw.lib 323

10.5.1 Interfaz de devolución de llamada de la biblioteca tdifw 323

10.5.2 Uso Ejemplos de biblioteca TDIFW 325

Código de muestra en este capítulo 326

Ejercicio 327

Capítulo 11 Controlador de protocolo NDIS 328

La conexión de red es sólo una fachada. De hecho, terminan siendo paquetes de red que viajan de un lado a otro a través del cable de red. Los piratas informáticos inteligentes no utilizan Sockets para generar conexiones. ¿Se puede encontrar información oscura si está oculta en un solo paquete de datos? El controlador del protocolo NDIS presentado en este capítulo es la base de la herramienta de captura de paquetes de red de Windows.

11.1 Arquitectura de controlador de red y paquete Ethernet 329

11.1.1 Controlador de protocolo y paquete Ethernet 329

11.1.2 Controlador de red NDIS 330

Entrada de controlador para el controlador de protocolo 11.2 331

Dispositivo de control de generación 11.2.1 331

Protocolo de registro 11.2.2 333

11.3 Vinculación entre protocolo y tarjeta de red 335

11.3.1 Concepto de enlace entre protocolo y tarjeta de red 56666.86666666661

11.3.2 Implementación del procesamiento de devolución de llamada de enlace 335

API 338 de 11.3.3 Enlace de protocolo tarjeta de red

11.3.4 Resolver el problema de competencia vinculante 339

11.3.5 Asignar grupo de paquetes del transceptor y grupo de buffer 340.

11. 3. 6 Envío de solicitud OID y devolución de llamada de finalización de solicitud 342

11. 3. 7 Implementación final de ndispotcreatebinding 46607. 86666666667

11.4 Desvinculación 351

11 . 4 . 1 API 351 se utiliza para desvincular.

11.4.2 Implementación del enlace ndisportshutdown 56636.86666666667

11.5 Controlador de protocolo operativo 356 en modo usuario.

11.5.1 Recepción y firma de protocolos 356

11.5.2 Programación para abrir el dispositivo en modo usuario 357

11.5.3 Envío de solicitudes de control con DeviceIoControl 358

11.5.4 Envío de paquetes de datos 360 y escritura de archivos

11.5.5 Uso de ReadFile para enviar paquetes de datos 362

11.6 Implementación de funciones en modo kernel 363

p>

11.6.1 Distribución e implementación de solicitudes 363

11.6.2 Espere el enlace del dispositivo, especifique el nombre del dispositivo 364.

11.6.3 Asignar finalización del dispositivo 365

11.6.4 Procesar solicitud de lectura 368

11.6.5 Procesar solicitud de escritura 370

11.7 Devolución de llamada de recepción basada en protocolo 374

11.7.1 Función de devolución de llamada relacionada con el paquete de datos recibido 374

11.7.2 Implementación del controlador de recepción 376

11. 7. 3 Implementación de TransferDataCompleteHandler 380

11.7.4 Implementación del controlador de paquetes de recepción 381

11.7.5 Puesta en cola de paquetes de datos recibidos 383

11.7.6 Eliminación de la cola de paquetes recibidos y completar solicitudes de lectura 385

Código de muestra en este capítulo 388

Ejercicios 389

Capítulo 12 Controlador NDIS Xiaogang 390

Si' Estoy cansado de perder Ethernet, ¿qué más puedo usar como interfaz de red? Por supuesto, cualquier dispositivo capaz de comunicarse tiene el potencial de reemplazar a Ethernet. Incluso si no desea modificar innumerables aplicaciones escritas a través de la interfaz TCP, aún podemos usar otros dispositivos de comunicación para virtualizar la tarjeta de red. Este capítulo presenta la tecnología de tarjeta de red virtual impulsada por puertos pequeños.

12.1 Aplicación y descripción general del controlador de minipuerto 391

12.1.1 Aplicación del controlador de minipuerto 391

12.1.2 Ejemplo de controlador de minipuerto 392

p>

12.1.3 Operación y programación del controlador de portlet 393

12.2 Inicialización del controlador de minipuerto 393

DriverEntry 393 es controlado por el minipuerto 12.2.1

12.2.2 Estructura del adaptador del controlador de minipuerto 396

12.2.3 Lectura de información de configuración 397

12.2.4 Configuración del contexto del adaptador de portlet 398

Implementar 12.2. Inicialización de 5 m 399

Implementar 12.2.6 MPHalt 402

12.3 Abrir dispositivo ndisprot 403.

12.3.1 Destino de entrada y salida 403

12.3.2 Enviar solicitud de control de IO del dispositivo al destino IO 404

12.3.3 Abra la interfaz ndisprot y complete la configuración del dispositivo 406.

12.4 Utilice ndisprot para enviar el paquete 409.

12.4.1 Interfaz de paquetes controlada por minipuerto 409

12.4.2 Enviar bloque de control 409

12.4.3 Recorra el grupo de paquetes y complete TCB 412.

12.4.4 Construcción y envío de solicitudes de escritura 415

12.5 Uso de ndisprot para recibir paquetes de datos 417.

La API 417 del kernel 12.5.1 se utiliza para enviar paquetes de datos.

12.5.2 Enviar el paquete 418 desde RCB.

12. 5. 3 ndis prot 420 función de finalización de solicitud de lectura

12.5.4 Enviar solicitud de lectura 422

12.5.5 Leer paquete de datos tarea WDF 424

12. 5. 6 Generación y lista de tareas de lectura perimetral de NDIS 426

12.6 Implementación de otras funciones de devolución de llamada 428

12.6.1 Devolución de paquete 428

12.6.2 Completar directamente el procesamiento de consultas OID 429

12.6.3 Procesamiento de configuración de OID 432

Código de muestra en este capítulo 433

Ejercicio 434

Capítulo 13 Controlador de capa intermedia NDIS 435

Cuando no estamos satisfechos con tomar paquetes de datos y enviarlos, sino que intentamos controlar todo lo que entra y sale de nuestra máquina La capa intermedia de NDIS El controlador es la mejor opción cuando se trata de paquetes de datos. Aquí se ha mejorado la función del firewall: ya no estamos satisfechos con ver la conexión, el puerto y la dirección IP de la otra parte, sino que queremos ver la estructura original de cada paquete de datos. Este capítulo presenta el controlador intermedio NDIS.

13.1 Descripción general del controlador intermedio NDIS 436

13.1.1 Resumen de la arquitectura de red de Windows 436

13.1.2 Introducción al controlador intermedio NDIS 437

13.1.3 Aplicación del controlador de capa intermedia NDIS 56636.66666666666

13.1.4 Estructura del descriptor de paquetes NDIS 439

13.2 Entrada y vinculación del controlador de capa intermedia 442

13.2.1 Función de entrada impulsada por la capa intermedia 442

13.2.2 Dispositivo NIC de enlace dinámico 443

13.2.3 Inicialización de minipuerto (mpiinitialize) 445

13.3 El controlador de capa intermedia envía paquetes de datos 447

13.3.1 El principio de envío de paquetes de datos 447

13.3.2 "Reutilización" del descriptor del paquete de software 448

13.3.3 Descriptor del paquete de software "reapply" 451

13.3.4 Finalización asincrónica del envío del paquete de datos 453

13.4 Controlador de capa intermedia que recibe el paquete de datos 455

13.4 .1 Descripción general de la recepción de paquetes de datos 455

13.4.2 Uso de PtReceive para recibir paquetes de datos 456

13.4.3 Uso de PtReceivePacket para recibir 461.

Filtrado y empaquetado 463

13.5 Consulta y configuración del controlador de capa intermedia 466

13.5.1 Procesamiento de solicitud de consulta 466

13.5. Procesamiento de solicitudes de configuración 468

13.6 Identificador NDIS 470

13.6.1 Puntero de estructura invisible 470

13.6.2 Identificador NDIS común 471

Mal uso del identificador NDIS 473

Una solución 475

13.7 Equipos de control general para generación de energía 476

13.7.1 Agregar equipos de uso común 476 a la capa intermedia conductor.

13.7.2 Métodos tradicionales de generación de dispositivos de control 478.

Código de muestra 483 en este capítulo

Ejercicio 483

Apéndice A Cómo utilizar el CD-ROM original 485 de este libro