直接调用未记录的内核函数(xxxSendInput 和 xxxMouseEventDirect)

逆向工程 视窗 内核模式 登录 核心
2021-06-18 05:48:47

我的核心问题是如何对未记录的功能进行逆向工程。我想调用函数“xxxMouseEventDirect”(位于 win32kfull.sys)。我已经能够为此收集一些信息,但现在我有点卡住了。

调用层次如下:NtUserSendInput -> xxxSendInput -> xxxMouseEventDirect。

该函数如下所示:

NTSTATUS __fastcall* xxxMouseEventDirect (ULONG dx, ULONG dy, ULONG mouseData, ULONG dwFlags, ULONGLONG time, ULONGLONG extraInfo, ULONGLONG, ULONG);

我比较确定我正确调用了函数参数,但是调用函数时还是出现蓝屏。

蓝屏是这样发生的:

mov rax, qword ptr [win32kfull!_imp_gptiCurrent (fffffbe9`4c720ec0)]
mov r14, qword ptr [rax]
cmp qword ptr [r14+1B0h], rcx ; <--- Bluescreen because r14 == 0

当我调用 NtUserSendInput 时,rax 指向一个指针,然后通过 [r14+1B0h] 使用该指针。我直接调用xxxMouseEventDirect时,rax指向0,导致[r14+1B0h]导致蓝屏。我现在想知道 win32kfull!_imp_gptiCurrent 中存储了什么以及为什么当我直接调用 xxxMouseEventDirect 时它不在那里。

我在逆向工程领域比较新,想知道一般如何处理这样的问题。具体的技巧当然也很受欢迎。

谢谢

0个回答
没有发现任何回复~