能力值:
( LV2,RANK:10 )
26 楼
请问为什么要费好大劲执行KeAttachProcess(crsEProc),我试了一下把这个函数去掉,一样能够挂接成功啊。
能力值:
( LV8,RANK:130 )
27 楼
能力值:
( LV3,RANK:20 )
28 楼
目前QQ三国游戏中,也采用了类似的手法,hook shadow ssdt。保护常规的API函数。
怪不得获取不到QQ三国游戏的句柄,大家有谁可以获取到吗?
一些人说GetWindowText和GetNextWindow一起用可以,但是谁做出来了?可以说下吗?
我不是做外挂,只是需要QQ三国游戏的句柄。
能力值:
(RANK:1290 )
29 楼
good article
能力值:
( LV4,RANK:50 )
30 楼
很不错,收藏了
能力值:
( LV2,RANK:10 )
31 楼
就没人发个DELPHI版本的
能力值:
( LV3,RANK:20 )
32 楼
非常感谢!!!!
能力值:
( LV2,RANK:10 )
33 楼
VISTA 不能用了SSDT了
能力值:
( LV9,RANK:850 )
34 楼
用工具恢复楼主所说的那几个hook就可以FindWindow获取qq三国的句柄了,但是tessafe.sys应该会检测,最好是先停掉system的tessafe.sys模块线程,不然又要和bsod见面了
能力值:
( LV2,RANK:10 )
35 楼
干掉这个就行了NtValidHandleSecure
能力值:
( LV2,RANK:10 )
36 楼
怎么我编译好了,三层的就是不能用?
能力值:
( LV2,RANK:10 )
37 楼
太好了,谢谢
能力值:
( LV2,RANK:10 )
38 楼
好东西一定动手支持
能力值:
( LV2,RANK:10 )
39 楼
thanks for sharing ^^
能力值:
( LV2,RANK:10 )
40 楼
vista 定位csrss进程的代码已经不适用了,lz的代码只能应用于winxp系统,其他系统都不适用
能力值:
( LV2,RANK:10 )
41 楼
看不懂...以后再学习~
能力值:
( LV2,RANK:10 )
42 楼
顶..................学习中.....
能力值:
( LV2,RANK:10 )
43 楼
请问可以停掉"停掉system的tessafe.sys模块线程"的软件是什么啊?我一直没找到。。。
能力值:
( LV2,RANK:10 )
44 楼
学习了,,有用
能力值:
( LV2,RANK:10 )
45 楼
顶一下先,在慢慢看!
能力值:
( LV3,RANK:20 )
46 楼
下载 代码慢慢看.占座学习
能力值:
( LV2,RANK:10 )
47 楼
不错!(至少6个字符)
能力值:
( LV2,RANK:10 )
48 楼
NTSTATUS MyNtUserBuildHwndList(IN HDESK hdesk, IN HWND hwndNext, IN ULONG fEnumChildren, IN DWORD idThread, IN UINT cHwndMax, OUT HWND *phwndFirst, OUT ULONG* pcHwndNeeded)
{
NTSTATUS result;
if (PsGetCurrentProcessId()!=ProcessIdToProtect)
{
ULONG ProcessID;
if (fEnumChildren==1)
{
ProcessID = g_OriginalNtUserQueryWindow((ULONG)hwndNext, 0);
if (ProcessID==(ULONG)ProcessIdToProtect)
return STATUS_UNSUCCESSFUL;
}
........ 这个函数中的 if (fEnumChildren==1)判断是起什么作用的?
能力值:
( LV2,RANK:10 )
49 楼
多谢了,正在找这东西
能力值:
( LV4,RANK:50 )
50 楼
switch(controlCode)
{
case IO_PROTECT:
ProcessIdToProtect = (HANDLE)irpStack->Parameters.DeviceIoControl.Type3InputBuffer;
DbgPrint("IO_PROTECT:%d", ProcessIdToProtect);
break;
default:
break;
}
Irp->IoStatus.Status = STATUS_SUCCESS;
Irp->IoStatus.Information = 0;//这个地方要把返回大小赋值给他的
IoCompleteRequest(Irp, IO_NO_INCREMENT);
return status;
}
应该这么写
if(status==STATUS_SUCCESS)
Irp->IoStatus.Information = 返回大小 或 outputLength
else
Irp->IoStatus.Information = 0;
看来楼主在入门的时候用了easySYS之类的工具,而没自己去从头写一个驱动版HelloWorld,故不知这个细节。
这样一来METHOD_BUFFED或其它宏就都好用了 Irp->UserBuffer 与宏无关永远指向用户内存