IopIsNotNativeDriverImage
UINT8 __stdcall IopIsNotNativeDriverImage(_UNICODE_STRING *ImageFileName){
bool v1;
__int64 v3;
UINT64 ShareAccess;
INT64 ShareAccessa;
UINT64 OpenOptions;
INT64 OpenOptionsa;
UINT64 AllocationType;
UINT64 Win32Protect;
VOID *FileHandle;
VOID *SectionHandle;
VOID *BaseAddress;
_OBJECT_ATTRIBUTES ObjectAttributes;
UINT64 ViewSize;
_IO_STATUS_BLOCK v15;
_KAPC_STATE ApcState;
v1 = 0;
FileHandle = 0i64;
v15 = 0i64;
*(_QWORD *)&ObjectAttributes.Length = 48i64;
*(_QWORD *)&ObjectAttributes.Attributes = 576i64;
SectionHandle = 0i64;
memset(&ApcState, 0, sizeof(ApcState));
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.ObjectName = ImageFileName;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
LODWORD(OpenOptions) = 0;
LODWORD(ShareAccess) = 5;
if( ZwOpenFile(&FileHandle, 0x20ui64, &ObjectAttributes, &v15, ShareAccess, OpenOptions) < 0 )
return 0;
ObjectAttributes.Length = 48;
ObjectAttributes.RootDirectory = 0i64;
ObjectAttributes.Attributes = 576;
ObjectAttributes.ObjectName = 0i64;
*(_OWORD *)&ObjectAttributes.SecurityDescriptor = 0i64;
LODWORD(OpenOptionsa) = 0x8000000;
LODWORD(ShareAccessa) = 2;
if( ZwCreateSection(
(UINT64)&SectionHandle,
8ui64,
(INT64)&ObjectAttributes,
0i64,
ShareAccessa,
OpenOptionsa,
(UINT64)FileHandle) < 0 )
{
LABEL_4:
ZwClose((_HANDLE)FileHandle);
return 0;
}
BaseAddress = 0i64;
ViewSize = 0i64;
KiStackAttachProcess(PsInitialSystemProcess, 0i64, &ApcState);
LODWORD(Win32Protect) = 2;
LODWORD(AllocationType) = 0;
if( ZwMapViewOfSection(
SectionHandle,
(VOID *)0xFFFFFFFFFFFFFFFFi64,
&BaseAddress,
0i64,
0i64,
0i64,
&ViewSize,
ViewShare,
AllocationType,
Win32Protect) < 0 )
{
KiUnstackDetachProcess(&ApcState, 0i64);
ZwClose((_HANDLE)SectionHandle);
goto LABEL_4;
}
LODWORD(v3) = RtlImageNtHeader((UINT64)BaseAddress);
if( v3 )
v1 = *(_WORD *)(v3 + 4) != 0x8664;
ZwUnmapViewOfSection((VOID *)0xFFFFFFFFFFFFFFFFi64, BaseAddress);
KiUnstackDetachProcess(&ApcState, 0i64);
ZwClose((_HANDLE)SectionHandle);
ZwClose((_HANDLE)FileHandle);
return v1;
}Referenced by:
IopCheckIfNotNativeDriver