kernel32!DeviceIoControl
功能:直接发送控制代码到指定的设备驱动程序,使相应的移动设备以执行相应的操作。
函数原型:
BOOL WINAPI DeviceIoControl(
_In_ HANDLE hDevice,
_In_ DWORD dwIoControlCode,
_In_opt_ LPVOID lpInBuffer,
_In_ DWORD nInBufferSize,
_Out_opt_ LPVOID lpOutBuffer,
_In_ DWORD nOutBufferSize,
_Out_opt_ LPDWORD lpBytesReturned,
_Inout_opt_ LPOVERLAPPED lpOverlapped);
参数介绍:
hDevice,设备句柄
dwIoControlCode,应用程序调用驱动程序的控制命令,就是IOCTL_XXX IOCTLs。
lpInBuffer,应用程序传递给驱动程序的数据缓冲区地址。
nInBufferSize,应用程序传递给驱动程序的数据缓冲区大小,字节数。
lpOutBuffer,驱动程序返回给应用程序的数据缓冲区地址。
nOutBufferSize,驱动程序返回给应用程序的数据缓冲区大小,字节数。
lpBytesReturned,驱动程序实际返回给应用程序的数据字节数地址。
lpOverlapped,这个结构用于重叠操作。针对同步操作,请用ByVal As Long传递零值
返回值:
非零表示成功,零表示失败。
备注:
从用户空间向设备驱动发送一个控制消息。此函数在驱动级的恶意代码中是非常普遍使用的,因为他是一种最简单和灵活的方式,在用户空间和内核空间之间传递信息。
secur32!LsaEnumerateLogonSessions
功能:枚举当前系统上的登录会话
函数原型:
NTSTATUS NTAPI LsaEnumerateLogonSessions( _Out_ PULONG LogonSessionCount, _Out_ PLUID *LogonSessionList);
参数介绍:
LogonSessionCount:指向一个long型的指针,返回LogonSessionList链表中的参数个数。
LogonSessionList:指向LUID的指针,返回登录会话标识符数组中的第一个成员的地址。
返回值:
成功返回STATUS_SUCCESS,失败返回相应的错误码
备注:
枚举当前系统上的登录会话,往往是一个登录凭证窃取器使用的部分功能。
ntoskrnl!MmGetSystemRoutineAddress
功能:返回特定函数的地址
函数原型:
PVOID MmGetSystemRoutineAddress( _In_ PUNICODE_STRING SystemRoutineName);
参数介绍:
SystemRoutineName :函数名称
返回值:
成功则返回指定函数的地址,否则返回NULL。
备注:
与GetProcAddress类似,但是这个函数是内核代码使用的。这个函数从另外一个模块中获取函数的地址,但仅仅可以用来获得ntoskrnl.exe和hal.dll的函数地址。