Método 3: Utilización del puntero kmid

El método 3 implica utilizar el puntero kmid . Para localizar la dirección del punto de entrada para una extensión de kernel, utilice el valor del puntero kmid devuelto por la subrutina sysconfig(SYS_KLOAD) cuando se cargue la extensión de kernel. El puntero kmid apunta a la dirección de la rutina de punto de carga.

Para obtener la dirección del punto de carga, imprima el valor kmid durante la llamada sysconfig desde el método de configuración. Por ejemplo, utilice el módulo demo.c . A continuación, inicie el depurador de kernel KDB y visualice el valor al que apunta el puntero kmid .

Nota: La solicitud predeterminada es KDB(0)>.
  1. Visualice la memoria en la dirección devuelta como puntero kmid desde la subrutina sysconfig , escribiendo lo siguiente:
    dw 1304748

    El depurador de kernel KDB responde con algo similar a:

    demokext+000000: 01304040 01304754 00000000 01304648  .0@@.0GT.....0FH

    La primera palabra de datos visualizada es la dirección de la primera instrucción de la rutina demokext . Los datos visualizados se encuentran en la ubicación demokext+000000. Esto corresponde a la línea 26 del mapa presentado anteriormente. Sin embargo, demokext+000000 y .demokext+000000 no son la misma dirección. La ubicación .demokext+000000 corresponde a la línea 10 del mapa y es la dirección de la primera instrucción para la rutina demokext .

  2. Establezca el salto en la ubicación indicada desde el mandato anterior añadido al desplazamiento para llegar a la línea 67 utilizando el mandato siguiente:
    b 01304040+e0

    El depurador de kernel KDB responde con una indicación de la dirección en la que se ha establecido el punto de interrupción.

  3. Borre todos los puntos de interrupción escribiendo lo siguiente:
    ca