能力值:
( LV2,RANK:10 )
|
-
-
2 楼
记得西裤哥在驱动网有提过用这种方法关闭咔吧,希望高手们能指点一下它的原理!四个ID是怎么来的?为什么需要四个ID?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
NtOpenProcess->PsLookupProcessByProcessId->ExMapHandleToPointer->ExpLookupHandleTableEntry:
ExpLookupHandleTableEntry (
IN PHANDLE_TABLE HandleTable,
IN EXHANDLE Handle
)
{
ULONG i,j,k,l;
l = (Handle.Index >> 24) & 255;
i = (Handle.Index >> 16) & 255;
j = (Handle.Index >> 8) & 255;
k = (Handle.Index) & 255;
return &(HandleTable->Table[i][j][k]);
}
其中 EXHANDLE结构如下:
typedef struct _EXHANDLE {
union {
struct {
ULONG TagBits : 2;
ULONG Index : 30;
};
HANDLE GenericHandleOverlay;
};
} EXHANDLE, *PEXHANDLE;
而 EXHANDLE.GenericHandleOverlay = 传过来的进程ID,由上可知
EXHANDLE.Index = (GenericHandleOverlay/4) & 0x3FFFFFFF;
可见Index是ID整除4的结果,所以就有“四个ID”了。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
学习了,多谢!
|
|
|