Autor
|
Tema: [KERNEL MODE][?] No puedo incluir ntddk (Leído 5,132 veces)
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Buenas, estoy empezando a programar en Kernel Mode y, tengo ya descargado y configurado el compilador del DDK sin Visual Studio 2008. El caso es que quería probar como configurarlo para Visual Studio 2008. Seguí todos los pasos y, también he enlazado la librería ntddk. Cuando compilo me dice que no existe esta librería y, también lo probé de hacerlo con pragma aunque es lo mismo ¿Alguna sugerencia? Muchas gracias y saludos
|
|
« Última modificación: 26 Agosto 2010, 00:40 am por Horricreu »
|
En línea
|
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Para responderte primero es necesario saber que hiciste, paso por paso. - Enumera los pasos que has hecho
Mas allá que estén en el link, es necesario saber específicamente lo que has hecho para poder encontrar el error - Como has intentado linkear? que has puesto en pragma?
Igualmente dudo que eso tenga que ver, un tema es una referencia indefinida y otra muy distinta es que la librería ni siquiera exista. Postea los errores. Si el error es que la librería no existe, mi primer palpito es que no agregaste los directorios (inc,lib) correctamente a los paths del VS. - El WDK esta configurado correctamente?
Intenta generar un mínimo ejemplo sin utilizar Visual Studio para confirmar que todo lo relevante este instalado correctamente. Saludos!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Los archivos de cabecera se incluyen no se enlazan ... te veo un poco verde para este tema.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Littlehorse
All the world's a stage
Moderador
Desconectado
Mensajes: 2.714
Nie Dam Sie
|
Por eso le pregunte que es lo que había intentado enlazar, porque al principio creí que lo de linkear era solo un error de concepto y en realidad se refería a incluir, pero como no respondió, probablemente tengas razón y haya intentado enlazar el header con pragma lib u agregándola en las dependencias adicionales. Si fue así, supongo que el error ya le habrá quedado claro . Igualmente si con linkear se refería a incluir, el problema probablemente se deba a que los directorios de los archivos a incluir no están agregados correctamente. Horricreu, no se si estas leyendo algún libro, pero te recomendaría que vayas a la par de algún libro introductorio del tema y de paso que revises bastante la documentación del ddk. Saludos!
|
|
|
En línea
|
An expert is a man who has made all the mistakes which can be made, in a very narrow field.
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Vamos a ver, ya eliminé el DDK porque me daba problemas en el PC, no se instalaba... y, como se puede hacer directamente con el Visual Studio 2008 pues mejor. A ver, seguí los pasos de aquella Web y, en el paso número 10 decía que se podrían poner las librerías deseadas. Como decía, me fui a: Linker/Input/Additional Dependencies y puse lo siguiente: ntoskrnl.lib hal.lib ntddk.lib $(NOINHERIT) Puede que el problema esté aquí. Los archivos de cabecera se incluyen no se enlazan ... te veo un poco verde para este tema.
Hago lo que puedo, si me confundí de nombres ahora ya lo sé Por eso le pregunte que es lo que había intentado enlazar, porque al principio creí que lo de linkear era solo un error de concepto y en realidad se refería a incluir, pero como no respondió, probablemente tengas razón y haya intentado enlazar el header con pragma lib u agregándola en las dependencias adicionales. Si fue así, supongo que el error ya le habrá quedado claro . Igualmente si con linkear se refería a incluir, el problema probablemente se deba a que los directorios de los archivos a incluir no están agregados correctamente. Horricreu, no se si estas leyendo algún libro, pero te recomendaría que vayas a la par de algún libro introductorio del tema y de paso que revises bastante la documentación del ddk. Saludos! No respondí porque en España era un poco tarde y, estaba muy cansado Saludos EDITO: pongo el código: #include "ntddk.h" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) { DbgPrint("Ejemplo"); return STATUS_SUCCESSFUL; }
|
|
« Última modificación: 29 Septiembre 2010, 23:54 pm por Horricreu »
|
En línea
|
|
|
|
Hendrix
|
EDITO: pongo el código: #include "ntddk.h" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) { DbgPrint("Ejemplo"); return STATUS_UNSUCCESSFUL; }
Cuando descargues el driver te va a dar BSOD ya que te falta código (Rutina de salida, como mínimo).
|
|
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Horricreu
Wiki
Desconectado
Mensajes: 290
¡La verdad os hará libres!
|
Bueno es igual. Mejor dejo el Kernel Mode para más adelante siguiendo los sabios consejos de Eternal Idol Saludos
|
|
« Última modificación: 26 Agosto 2010, 00:38 am por Horricreu »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Cuando descargues el driver te va a dar BSOD ya que te falta código (Rutina de salida, como mínimo). En realidad la rutina de descarga es opcional y este modulo se descarga automaticamente al retornar un error.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Hendrix
|
Cuando descargues el driver te va a dar BSOD ya que te falta código (Rutina de salida, como mínimo). En realidad la rutina de descarga es opcional y este modulo se descarga automaticamente al retornar un error. Sin dar BSOD?? Sabia que se descargaba dando un error, y por lo tanto una BSOD... siempre creí que la rutina de descarga era obligatoria Bueno es igual. Mejor dejo el KM para más adelante siguiendo los sabios consejos de EI Saludos Creo que haces bien, sigue practicando en modo usuario para luego intentar entender y poder picar código para modo kernel. Un Saludo
|
|
« Última modificación: 18 Julio 2010, 13:56 pm por Hendrix »
|
En línea
|
"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
|
|
|
Eternal Idol
Kernel coder
Moderador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Sin dar BSOD?? Sabia que se descargaba dando un error, y por lo tanto una BSOD... siempre creí que la rutina de descarga era obligatoria Claro, un BSOD se produce por una excepcion no controlada (en modo Kernel) y en este caso estamos hablando de un valor de retorno no exitoso, algo totalmente esperado y no una excepcion. Lo mejor es que lo pruebes, vas a ver el mensaje en el depurador, el modulo se descargara posteriormente y el S.O. seguira funcionando sin problemas (al menos no relacionados con el modulo ). PDRIVER_UNLOAD DriverUnload The entry point for the driver's Unload routine, if any, which is set by the DriverEntry routine when the driver initializes. If a driver has no Unload routine, this member is NULL. La mayoria de los modulos de seguridad no tienen una rutina de descarga, de otra manera con hacer "net stop modulo" ya te saltarias la proteccion
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
|