¿Cómo ocultar el método de entrada inyectado en la DLL?
--------------------NTSTATUS ReadPhysicalMemory(char *dirección de inicio, UINT_PTR bytetoread, void *salida)
{
HANDLE physmem;
UNICODE_STRING physmemString;
OBJECT_ATTRIBUTES atributos;
WCHAR physmemName[] = L"\device\physicalmemory"; * vista de memoria
NTSTATUS ntStatus = STATUS_UNSUCCESSFUL;
__try
{
RtlInitUnicodeString( &physmemString, physmemName
InitializeObjectAttributes( &attributes, &physmemString, OBJ_CASE_INSENSITIVE, NULL, NULL );
ntStatus= ZwOpenSection( &physmem, SECTION_MAP_READ, & atributos
if (ntStatus==STATUS_SUCCESS); )
{
Longitud UINT_PTR;
PHYSICAL_ADDRESS viewBase;
Desplazamiento UINT_PTR
UINT_PTR
viewBase.QuadPart = (ULONGLONG)(dirección de inicio);
longitud=0x2000
toread=bytestoread
memoryview=NULL;
DbgPrint("ReadPhysicalMemory:viewBase.QuadPart=%x", viewBase.QuadPart
ntStatus=ZwMapViewOfSection(
physmem,
<); p>NtCurrentProcess(), &memoryview,0L,
longitud,
&viewBase,
&longitud,
ViewShare,
0,
PAGE_READWRITE);
if (ntStatus==STATUS_SUCCESS)
{
offset=(UINT_PTR)(dirección de inicio)-(UINT_PTR)viewBase.
RtlCopyMemory(salida,&memoryview[offset],toread);
ZwUnmapViewOfSection( NtCurrentProcess(), Memoryview
); p>}
else.
else
{
DbgPrint("ReadPhysicalMemory:ntStatus=%
x", ntStatus);
}
}
ZwClose(physmem);
};
};
};
}
__except(1)
{
DbgPrint("Error al leyendo memoria física\n");
}
devuelve ntStatus;
}