能力值:
( LV2,RANK:10 )
|
-
-
2 楼
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sys中找到NtUserSendInput然后再调用,注意要先挂靠到GUI进程中才能调用
#define LOCKEDCODE code_seg()
#pragma LOCKEDCODE
PVOID GetWin32kFullRoutineAddress(PUNICODE_STRING SystemRoutineName,PDRIVER_OBJECT pDriverObject)
{
ANSI_STRING AnsiRoutineName;
PLIST_ENTRY NextEntry, PsLoadedModuleList;
ERESOURCE PsLoadedModuleResource;
PLDR_DATA_TABLE_ENTRY TableEntry,Enumerator;
NTSTATUS Status;
PVOID FunctionAddress=0;
UINT32 nCount = 0;
KIRQL oldIrql; //PEXCEPTION_POINTERS exceptionCode;
if (SystemRoutineName == NULL) return NULL;
TableEntry = (PLDR_DATA_TABLE_ENTRY)pDriverObject->DriverSection;
Status = RtlUnicodeStringToAnsiString(&AnsiRoutineName, SystemRoutineName, TRUE);
if (!NT_SUCCESS(Status)) return NULL;
UNICODE_STRING Win32kfull = RTL_CONSTANT_STRING(L"win32kfull.sys");
PsLoadedModuleList = &TableEntry->InLoadOrderLinks;
NextEntry = PsLoadedModuleList->Flink;
__try
{
while (NextEntry != PsLoadedModuleList)
{
nCount++; //DbgPrint("finding in %u times\n", nCount);
Enumerator = CONTAINING_RECORD(NextEntry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
if (RtlEqualUnicodeString(&Win32kfull, &Enumerator->BaseDllName, FALSE))
{
KeRaiseIrql(DISPATCH_LEVEL, &oldIrql);//必须有,win32kfull.sys必须在这个中断级
FunctionAddress = RtlFindExportedRoutineByName(Enumerator->DllBase, AnsiRoutineName.Buffer);
KeLowerIrql(oldIrql);
}
if (FunctionAddress != NULL) break;
NextEntry = NextEntry->Flink;
}//end while
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
DbgPrint("Exception Occured\n");
FunctionAddress = NULL;
}
RtlFreeAnsiString(&AnsiRoutineName);
return FunctionAddress;
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING RegistryPath)
{
UNICODE_STRING FunctionName = RTL_CONSTANT_STRING(L"NtUserSendInput");
NtUserSendInput=GetWin32kFullRoutineAddress(&FunctionName,pDriverObject);
//然后就可以调用NtUserSendInput////了,参数和你的一样,要在ring0层调用,而且要先挂靠到GUI进程中
__try
{
NtUserSendInput(1,&input,sizeof(INPUT));
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
DbgPrint("Exception Occured\n");
}
return status;
}
最后于 2019-6-15 18:37
被脚本灬丨小子编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
哈哈
|
能力值:
( LV5,RANK:60 )
|
-
-
4 楼
脚本灬丨小子
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sys中找到NtUserSendInput然后再调用,注意要先挂靠到GUI进程中才能调用#define&nb ...
其实只要sessionid不是0就必定能调用,用PsGetCurrentProcessSessionId判断下就够了
最后于 2019-6-26 11:55
被hhkqqs编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
hhkqqs
脚本灬丨小子
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sys中找到NtUserSendInput然后再调用,注意要 ...
判断是否有会话吗?我去试试,先感谢hhkqqs了
最后于 2019-9-1 21:24
被脚本灬丨小子编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
这么有趣吗?回复竟隔了9年,哈哈哈,牛逼。我也来留个脚印,这里是10年后的回复。
|
能力值:
( LV1,RANK:0 )
|
-
-
7 楼
这真是10年后的回复呀
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
脚本灬丨小子
hhkqqs
脚本灬丨小子
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sy ...
你好,我尝试了一下. 获取到地址之后挂靠GUI线程调用, 调用不成功,双机看了下判断了结构指针+结构数量*0x28>000007ffffff0000 清零返回 在GUI进程Alloc了一片内存当作结构 结果还是调用失败.请问我是漏掉了什么吗
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
先要获取光标所在位置,然后再。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
我也没有效果,已经挂靠GUI进程
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我也没效果,就返回0
|
能力值:
( LV1,RANK:0 )
|
-
-
12 楼
妮可
我也没效果,就返回0
解决了吗哥,我现在的情况也跟你情况一样
|
能力值:
( LV1,RANK:0 )
|
-
-
13 楼
哎哟哥哥^
我也没有效果,已经挂靠GUI进程
解决了吗哥,我现在的情况也跟你情况一样
|
能力值:
( LV1,RANK:0 )
|
-
-
14 楼
ReCreateLife
你好,我尝试了一下.
获取到地址之后挂靠GUI线程调用,
调用不成功,双机看了下判断了结构指针+结构数量*0x28>000007ffffff0000 清零返回 在GUI进程Alloc了一片内 ...
解决了吗哥,我现在的情况也跟你情况一样
|
能力值:
( LV1,RANK:0 )
|
-
-
15 楼
脚本灬丨小子
hhkqqs
脚本灬丨小子
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sy ...
解决了吗哥,我现在的情况也跟你情况一样
|
能力值:
( LV1,RANK:0 )
|
-
-
16 楼
木志本柯
这么有趣吗?回复竟隔了9年,哈哈哈,牛逼。我也来留个脚印,这里是10年后的回复。
解决了吗哥,我现在的情况也跟你情况一样
|
能力值:
( LV1,RANK:0 )
|
-
-
17 楼
hhkqqs
脚本灬丨小子
这里是来自九年后的回复,在win10 1607上测试通过,先去win32kfull.sys中找到NtUserSendInput然后再调用,注意要 ...
解决了吗哥,我现在的情况也跟你情况一样
|
|
|