能力值:
( LV2,RANK:10 )
|
-
-
2 楼
汗死……64位下,tmd ssdt表就没有导出……
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
刚吃饭回来 查了一下 的确是个悲剧 找方法拙计ing
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
1.内核SSDT没有导出 只能用ZW函数找特征
2.有PG在...你能干嘛
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
PG可以日掉的
还有inline hook 在64位下比 ssdt hook稳定
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
干掉PG会导致严重的安全问题..
所以是无法商业化的. .自己用就随便了
为啥64位下inline反而稳定呢?
|
能力值:
( LV5,RANK:60 )
|
-
-
7 楼
PG已经干掉了 就是找下SSDT而已~
|
能力值:
( LV5,RANK:60 )
|
-
-
8 楼
你要这样想哦,自己的电脑,关了PG, 自己想怎么搞自己的系统,就怎么搞,但是,其他软件因为不知道
有没有关PG,所以不敢乱搞
|
能力值:
( LV5,RANK:60 )
|
-
-
9 楼
兄弟给指点下 SSDT有啥比较方便快捷的获取方式 我考虑了一下还是觉得 比INLINE舒服点。
反正我也是自己电脑折腾
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
你真懒啊,下次得百度一下啊~
我搜索了2篇文章,可以看看
http://www.m5home.com/bbs/thread-6289-1-1.html
http://www.kanliuxing.com/thread-1128-1-1.html
貌似PDB文件解析KeServiceDescriptorTable这个符号,x64下就能获取地址~
或者搜索特征码,
|
能力值:
( LV5,RANK:60 )
|
-
-
11 楼
http://blog.csdn.net/lziog/article/details/6059409
这篇文章也不错~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
这篇文章挺好,, 哇咔咔,小K...大雄可是和我们同一个时代的人呐..
你们都比我积极多了。
|
能力值:
( LV9,RANK:380 )
|
-
-
13 楼
//true:ssdt
//false:shadowssdt
PSERVICE_DESCRIPTOR_TABLE GetSsdtExTable(unsigned char *ZwCloseProcBase,BOOLEAN SsdtType)
{
UNICODE_STRING FunctionName;
LDE Ldex64=NULL;
int nIndex;
DWORD64 OpcodeLength;
BOOLEAN IsFound;
LONG ImmTemp;
DWORD_PTR UsignedImmTemp;
unsigned char * KiServiceInternal;
DWORD_PTR KeServiceDescriptorTableShadow;
if (ZwCloseProcBase == NULL)
{
return NULL;
}
Ldex64=(LDE)ExAllocatePool(NonPagedPool,sizeof(LdeCode));
if (Ldex64==NULL)
{
return FALSE;
}
RtlCopyMemory(Ldex64,LdeCode,sizeof(LdeCode));
IsFound=FALSE;
for (nIndex=0;nIndex<30;nIndex++)
{
if(MmIsAddressValid(ZwCloseProcBase))
{
OpcodeLength=Ldex64((DWORD64)ZwCloseProcBase,64);
if (OpcodeLength==5)
{
if(ZwCloseProcBase[0]==0xe9)
{
IsFound=TRUE;
break;
}
}
ZwCloseProcBase+=OpcodeLength;
}
}
if (!IsFound)
{
LogDebug("get ZwCloseProcBase call failed\n");
return NULL;
}
ImmTemp=*(LONG*)(&ZwCloseProcBase[1]);
UsignedImmTemp=(DWORD_PTR)ImmTemp;
KiServiceInternal=(unsigned char *)((DWORD_PTR)ZwCloseProcBase+5+UsignedImmTemp);
LogDebug("KiServiceInternal:%p\n",KiServiceInternal);
/*
fffff800`03c8ffea 83e720 and edi,20h
fffff800`03c8ffed 25ff0f0000 and eax,0FFFh
nt!KiSystemServiceRepeat:
fffff800`03c8fff2 4c8d1547782300 lea r10,[nt!KeServiceDescriptorTable (fffff800`03ec7840)]
fffff800`03c8fff9 4c8d1d80782300 lea r11,[nt!KeServiceDescriptorTableShadow (fffff800`03ec7880)]
*/
IsFound=FALSE;
for (nIndex=0;nIndex<150;nIndex++)
{
if(MmIsAddressValid(KiServiceInternal))
{
OpcodeLength=Ldex64((DWORD64)KiServiceInternal,64);
if (OpcodeLength==5)
{
if (KiServiceInternal[0]==0x25&&
KiServiceInternal[1]==0xff&&
KiServiceInternal[2]==0x0f&&
KiServiceInternal[3]==0x00&&
KiServiceInternal[4]==0x00)
{
KiServiceInternal+=OpcodeLength;
OpcodeLength=Ldex64((DWORD64)KiServiceInternal,64);
if (OpcodeLength==7)
{
//4c 8d 15
if (KiServiceInternal[0]==0x4c&&
KiServiceInternal[1]==0x8d&&
KiServiceInternal[2]==0x15)
{
//get ssdt
if (SsdtType)
{
IsFound=TRUE;
break;
}
KiServiceInternal+=OpcodeLength;
OpcodeLength=Ldex64((DWORD64)KiServiceInternal,64);
if (OpcodeLength==7)
{
//4c 8d 1d
if (KiServiceInternal[0]==0x4c&&
KiServiceInternal[1]==0x8d&&
KiServiceInternal[2]==0x1d)
{
//__debugbreak();
IsFound=TRUE;
break;
}
}
}
}
}
}
KiServiceInternal+=OpcodeLength;
}
}
if(!IsFound)
{
return NULL;
}
ImmTemp=*(LONG*)(&KiServiceInternal[3]);
UsignedImmTemp=(DWORD_PTR)ImmTemp;
KeServiceDescriptorTableShadow=(DWORD_PTR)KiServiceInternal+7+UsignedImmTemp;
LogDebug("SSDTEx Table:%p\n",KeServiceDescriptorTableShadow);
return (PSERVICE_DESCRIPTOR_TABLE)KeServiceDescriptorTableShadow;
}
|
能力值:
( LV5,RANK:60 )
|
-
-
14 楼
好找法~,
2级找法,
先找一个导出函数,再在里面找未导出函数,最后搜索特征码,继续找到我们的结构~
|
能力值:
( LV4,RANK:50 )
|
-
-
15 楼
就算不知道有木有关。也不能动SSDT吧。。。只能用微软建议的回调啊
|
能力值:
( LV5,RANK:60 )
|
-
-
16 楼
各种感谢 百度不给力 还是GG比较吊。
|
能力值:
( LV5,RANK:60 )
|
-
-
17 楼
吃泡面 看代码
我好好读读~ 嘿嘿
|
能力值:
( LV5,RANK:60 )
|
-
-
18 楼
难得啊 你也冒泡。
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
因为不需要硬编……
|
能力值:
( LV4,RANK:50 )
|
-
-
20 楼
64位下获取ssdt函数 通过zw同名函数可以直接得到指针存放位置.修改即可..不用非要找到ssdt基地址然后+偏移吧
|
能力值:
( LV2,RANK:10 )
|
-
-
21 楼
mark
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
好吧……这也是个办法
不过研究在64位下hook没意思
要研究的是在win8下如何修改内核不蓝屏
|
能力值:
( LV13,RANK:240 )
|
-
-
23 楼
LDE 这个结构函数 自己定义的还是在哪里,或者是某个开源库里头的?求指导
|
能力值:
( LV13,RANK:240 )
|
-
-
24 楼
哇咔咔 找到了哟~~~
|
能力值:
( LV3,RANK:20 )
|
-
-
25 楼
求分享啊。
|
|
|