Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Distorsion

#71


NTSTATUS HookedDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
{
NTSTATUS       ntStatus;
PIO_STACK_LOCATION IoStack=IoGetCurrentIrpStackLocation(Irp);

PFILE_OBJECT FileObject;
POBJECT_NAME_INFORMATION wcFilePath;
ANSI_STRING aStr;

if (PsReferenceProcessFilePointer(PsGetCurrentProcess(),&FileObject)==STATUS_SUCCESS)
{
__try{
if (IoQueryFileDosDeviceName(FileObject,&wcFilePath)==STATUS_SUCCESS)
{
DbgPrint("Ruta archivo: %ws .\n",wcFilePath->Name.Buffer);
}
else
{
DbgPrint("Ruta archivo: %ws .\n",FileObject->FileName.Buffer);
}
}__except(EXCEPTION_EXECUTE_HANDLER){
ntStatus = GetExceptionCode();
DbgPrint("Exception: %d.\n", ntStatus);
}



}



Este es el codigo, controlar las excepciones no me sirve de nada porque me da pantallazo azul igual :-(

Con el %wZ sige mostrando la barra y transformando la cadena con RtlUnicodeStringToAnsiString me devuelve un punto en vez de una barra.

Lo raro aparte del cuelgue de IoQueryFileDosDeviceName es que no me imprima 'Ruta archivo:' solo una barra.
#72
Ya lo he probado con el %ws y el 'L' delante de todo y sale lo mismo :-[
#73
Haber si alguien sabe echarme una mano.

Intento obtener la ruta del archivo desde un PFILE_OBJECT, entonces si hago esto:


if (IoQueryFileDosDeviceName(FileObject,&wcFilePath)==STATUS_SUCCESS)
           DbgPrint("Ruta archivo: %s .\n",wcFilePath->Name.Buffer);


Si hago esto funciona bien pero de vez en cuando me da un pantallazo azul muy bonito el IoQueryFileDosDeviceName(FileObject,&wcFilePath).

Así que intento evitar esta API y hago lo siguiente:

DbgPrint("Ruta archivo: %s .\n",FileObject->FileName.Buffer);


Y cual es mi sorpresa? Que solo imprime una barra :huh:

Haber si alguien me ayuda.

Gracias.
#74
Medio solucionado.

Ahora solo me peta aveces  ;D
#75
Tengo un problemilla con el siguiente codigo, es sencillo pero me da un pantallazo azul  >:(


PFILE_OBJECT FileObject;

PsReferenceProcessFilePointer(PsGetCurrentProcess(),&FileObject);



PsGetCurrentProcess() me devuelve el resultado correcto y no da problemas pero al usar PsReferenceProcessFilePointer pues pantallazo azul.


Saludos.
#76
Hola,
estoy intentando hacer un hook en un driver, cambiando una dirección de los MAJORS, el problema es que cuando lo hago se cuelga el sistema.

No se si es porque no obtengo bien la dirección del MAJOR o por el cambio de dirección del MAJOR o por la función propia que sustituyo con el hook.

Se que con el memoryze puedo ver las direcciones de los drivers y sus MAJORS así ya descartaría la primera posibilidad, pero no funciona con el windows 7.

Alguien sabría algún programa parecido que funcione en windows 7?

Por cierto Virtual pc más windbg y driver cargado con osrloader me peta la VM :S

He visto en codigos cosas parecidas a estas:
InterlockedExchangePointer(&Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL],HookDriver);

Seria lo mismo que esto verdad:

Driver->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = HookDriver;

Saludos.
#77
Si a alguien le interesa un visor de APIs hookeadas que funcione con win7 es el RootKit Hook analizer.
;D

#78
Muy buen texto, me ha entrado el gusanillo.

Mi pregunta es si ai por aí alguna lista de las apis que se pueden llamar en modo kernel para encontrar equivalentes a las de modo usuario, por ejemplo encontrar la equivalente a GetProcessId().

Gracias por la aportación ;-)
#79
Muy bueno  ;D Gracias a vosotros esto esta cogiendo nivel.

Saludos.
#80
En este caso el peso no tiene nada de malo pero es elevado por una programación poco eficiente, el tamaño elevado viene a ser reflejo de eso, nada más. Sigue así nadie hace las cosas perfectas a la primera.

Saludos.