SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: Zirrosis en Miércoles 23 de Enero de 2008, 15:40
-
Tengo un problema hookeando la ZwDeleteFile, e escrito un modulo de kernel basandome en ejemplos que encontre por la red y el codigo me hookea bien, ya que verificandolo con un "visor de SSDT" veo que si me hookea la dirección correctamente. El problema es que cuando llamo a la DeleteFile desde Ring3 no se llama a mi función, y no encuentro explicacion a eso. :blink:
La direcciónes me las da correctamente, y se hookea bien, pero a la hora de llamar a DeleteFile nunca aparece el emnsage de Me llaman por la pantalla del DebugView....alguna idea??? :unsure:
Un Saludo.
EI: saco el codigo, no es necesario y no quiero que prolifere.
-
Primero y principal te recomiendo no usar hooks, especialmente para temas de filesystem, Microsoft provee maneras documentadas y correctas que pueden ser usadas en la amplia mayoria de los casos para no utilizar un hack como son los hooks.
Si comprobas el codigo de DeleteFileA/W vas a ver que no llaman a ZwDeleteFile (funcion solo disponible en XP y superiores por cierto) sino que hacen ZwOpenFile + ZwSetInformationFile para borrar un archivo. Consulta la documentacion para esta ultima y vas a ver como funciona, sino desensambla DeleteFileA/W.
-
Vaya, creia que DeleteFile llamaba directamente a ZwDeleteFile :blink:
Tu como desensamblas las APIS a Ring3??? Olly o con el Windbg???
Muchas gracias Eternal ;)
-
Vaya, creia que DeleteFile llamaba directamente a ZwDeleteFile :blink:
No, el punto fundamental esta en que es una funcion nueva solo disponible desde XP en adelante.
Tu como desensamblas las APIS a Ring3??? Olly o con el Windbg???
Como trabajo principalmente en modo Kernel el Ollydbg no me serviria asi que uso el WinDbg siempre (ademas es mucho mas potente) B)
Muchas gracias Eternal ;)
De nadas :comp:
-
Como trabajo principalmente en modo Kernel el Ollydbg no me serviria asi que uso el WinDbg siempre (ademas es mucho mas potente) B)
Cierto, aunque para Ring3 el olly sirve, es que tengo mucha mas experiencia en el Olly que en el Windbg, y se que es mas potente, pero me cuesta adaptarme xDDD
Por cierto, para desensamblar es: u <api> en el Windbg, no???
-
Cierto, aunque para Ring3 el olly sirve, es que tengo mucha mas experiencia en el Olly que en el Windbg, y se que es mas potente, pero me cuesta adaptarme xDDD
Por cierto, para desensamblar es: u <api> en el Windbg, no???
Si, en este caso por ejemplo:
u Kernel32!DeleteFileA
-
Me da lo siguiente :S
lkd> u Kernel32!DeleteFileA
Couldn't resolve error at 'Kernel32!DeleteFileA'
-
Me da lo siguiente :S
lkd> u Kernel32!DeleteFileA
Couldn't resolve error at 'Kernel32!DeleteFileA'
Eso pasa por usar lkd ... no tenes que depurar el Kernel para una DLL de modo Usuario ...
-
Entonces donde voy????
PD: Ya te dije que no me adapto muy bien al Windbg todavia :S
-
Entonces donde voy????
PD: Ya te dije que no me adapto muy bien al Windbg todavia :S
Por ejemplo abris el WinDbg:
File>>Open Executable y seleccionas cualquier ejecutable, todos cargan Kernel32.dll cosa que el Kernel no hace. Sino podes abrir el mismo Kernel32.dll con File>>Open Crash Dump.
-
Ahora si....muchas gracias Eternal ;)