API函数:驱动类(第28课)

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的函数地址。

头像
  • ¥ 1.0元
  • 市场价:9.9元
  • ¥ 0.0元
  • 市场价:99.0元
  • ¥ 98.0元
  • 市场价:298.0元
  • ¥ 69.0元
  • 市场价:99.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: