能力值:
( LV5,RANK:60 )
|
-
-
2 楼
沙发,学习。。还在啃基础。
|
能力值:
( LV7,RANK:110 )
|
-
-
3 楼
膜拜肯放血的大牛!
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
支持楼主 辛苦了
|
能力值:
(RANK:210 )
|
-
-
5 楼
Object hook 自己定义Process Type和Thread Type才是王道
如果是security就搞 checkobjectaccess,如果是open就搞incrementhandlecount.
template<>
class CObject<Win32Win7Sp0,32>:
public CObjectBase
{
bool PatchOpenProcedure(void* pvNtosBase,unsigned long ulSize) const
{
PUCHAR pucBase = static_cast<PUCHAR>(pvNtosBase);
KdPrint(("Find begin:%p\n",pucBase));
bool bRet = false;
for (unsigned long i = 0; i < ulSize; ++i)
{
if (*pucBase == 0xFF &&
*(pucBase + 1) == 0x74 &&
*(pucBase + 2) == 0x24 &&
*(pucBase + 3) == 0x1C &&
*(pucBase + 4) == 0xFF &&
*(pucBase + 5) == 0x75 &&
*(pucBase + 6) == 0x0C &&
*(pucBase + 7) == 0xFF &&
*(pucBase + 8) == 0x75 &&
*(pucBase + 9) == 0x14 &&
*(pucBase + 10) == 0xFF &&
*(pucBase + 11) == 0x75 &&
*(pucBase + 12) == 0x10 &&
*(pucBase + 13) == 0xFF &&
*(pucBase + 14) == 0x75 &&
*(pucBase + 15) == 0x18 &&
*(pucBase + 16) == 0xFF &&
*(pucBase + 17) == 0x75 &&
*(pucBase + 18) == 0x08 &&
*(pucBase + 19) == 0xFF &&
*(pucBase + 20) == 0x57 &&
*(pucBase + 21) == 0x5C)
{
//此处省略
bRet = true;
}
}
return bRet;
}
};
|
能力值:
(RANK:400 )
|
-
-
6 楼
膜拜楼上 C gaga 大神。
|
能力值:
( LV8,RANK:130 )
|
-
-
7 楼
同样膜拜!居然用c++类模板。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
学习了 C++
|
能力值:
( LV4,RANK:40 )
|
-
-
9 楼
看不懂的咋办?
|
能力值:
( LV15,RANK:440 )
|
-
-
10 楼
标记一下,有时间了回头来学习。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
不是很明白LZ的意思
OBJECT_TYPE MyProcessTYPE
memcpy(MyProcessTYPE,PsProcessTYPE);
然后
OBJECT_TO_OBJECT_HEADER
ObjectHeader->type = &MyProcessTYPE
这样怎么对抗Object hook 这样是防护进程而已
|
能力值:
( LV3,RANK:20 )
|
-
-
12 楼
===========
额,,是这样的
你创建的时候,游戏已经HOOK了,也就是说,你MEMCPY得到的也是被HOOK的
那么你自己的OBJETTYPE里,你把HOOK解了,这样就等于过滤掉了游戏的OBJECT HOOK
然后把目标的EPROCESS换成这个你自己的OBJECTTYPE,就OK了。
不过,我貌似最开始这样搞的,但MEMCPY好像会有问题,我后来都是自己创建个真的OBJECTTYPE来用。
===================
修正一下:
“看到OpenProcedure了吧。所以在被hook之前要保存_OBJECT_TYPE结构。”
楼主是先保存原始的OBJECTTYPE,所以,他不需要解HOOK那步,游戏启动后,直接把目标的EPROCESS里的OBJETTYPE替换成你自己的就行了。
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
这个我清楚,
EPROCESS的TYPE就是PsProcessType
Object Type 对抗Object Hook ,目的不是为了顺利打开进程吗
替换成自己的Type后这个进程还哪能被打开
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
留个脚印先~~
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
=================
恩,确实你理解的是对的,,替换成自己的OBJECTTYPE后,是无法打开的,,看过WRK代码就会知道
所以,这种做法其实是进程防护,而不是对抗~
|
能力值:
(RANK:210 )
|
-
-
16 楼
5楼的方法是经过验证的.(代码是经过精简放上来的,for中的代码不全).
|
|
|