Pescando solo en el río frío: una lista de libros sobre programación de seguridad del kernel de Windows
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 p>
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 p>
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> 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 p >
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 p>
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 p>
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 p>
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