By: Hell_Demon
You'll probably need an injector with kernel priviledges since hackshield hides crossfire from alot of stuff
I had a question about what you said here, Hell
How does one obtain 'kernel priviledges' ?
Do you mean kernel acces?
Couse I know how to create a driver and execute code inside the kernel:
Actualy, I've a question regarding the code too
I'm trying to create an iodevice, so that I can communicate with my driver from user mode (IoCreateDevice)
But the function fails, I don't know with wich error message, since returing a value is for some reason not possible...
Can anyone spot an error??
Code:
#include "ntddk.h"
const WCHAR deviceNameBuffer[] = L"\\Device\\SCHiM";
PDEVICE_OBJECT g_Device;
NTSTATUS OnStubDispatch(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp )
{
Irp->IoStatus.Status = STATUS_SUCCESS;
IoCompleteRequest(Irp, IO_NO_INCREMENT );
DbgPrint("Function called, communication successfull");
return STATUS_SUCCESS;
}
VOID OnUnload( IN PDRIVER_OBJECT DriverObject )
{
DbgPrint("OnUnload called\n");
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ){
NTSTATUS ntStatus;
int i;
UNICODE_STRING deviceNameUnicodeString;
// Set up our name and symbolic link.
RtlInitUnicodeString (&deviceNameUnicodeString, deviceNameBuffer );
// Set up the device.
ntStatus = IoCreateDevice ( DriverObject, 0, &deviceNameUnicodeString, 0x00001234, 0, TRUE, &g_Device );
DbgPrint("Status: Loaded");
DbgPrint(" Divice is: %x",ntStatus); //this doesn't work for some reason
DriverObject->DriverUnload = OnUnload;
for(i=0;i< IRP_MJ_MAXIMUM_FUNCTION; i++ ) //loop through messages received...
{
DriverObject->MajorFunction[i] = OnStubDispatch; //if got messages shove them to the function
}
return STATUS_SUCCESS;
}
EDIT: The reason why I'm not trying to see if I can call api's at all is because I've already lost my VM os twice, and all my source
So before trying and figuering it all out myself I thougt I would ask before going on another os killing spree