能力值:
( LV2,RANK:10 )
|
-
-
2 楼
还有参数表呢
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
对头,那么多参数你怎么搞?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
#include "ntddk.h"
#define INITCODE code_seg("INIT")
typedef struct _SERVICE_DESCRIPTOR_TABLE
{
PVOID ServiceTableBase;
PULONG ServiceCounterTableBase;
ULONG NumberOfService;
ULONG ParamTableBase;
}SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE;
extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;
ULONG Address,OldAddress;
ULONG MySsdt[284];
void hook();
void unhook();
void OnUnload(PDRIVER_OBJECT DriverObject);
#pragma INITCODE
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
DriverObject->DriverUnload=OnUnload;
hook();
return STATUS_SUCCESS;
}
void OnUnload(PDRIVER_OBJECT DriverObject)
{
unhook();
}
void hook()
{
MySsdt[0]=0x805a5630;
MySsdt[1]=0x805f240e;
MySsdt[2]=0x805f5c04;
..............
MySsdt[281]=0x806196ae;
MySsdt[282]=0x8061990a;
MySsdt[283]=0x805cc942;//我从kernel detective上抄来的
Address=(ULONG)KeServiceDescriptorTable;
OldAddress=*(ULONG*)Address;
__asm
{
cli
mov eax,cr0
and eax,not 10000h
mov cr0,eax
}
*(ULONG*)Address=(ULONG)&MySsdt[0];
__asm
{
mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}
}
void unhook()
{
__asm
{
cli
mov eax,cr0
and eax,not 10000h
mov cr0,eax
}
*(ULONG*)Address=OldAddress;
__asm
{
mov eax,cr0
or eax,10000h
mov cr0,eax
sti
}
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
大家帮帮我啊
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
哦 貌似 参数表不受影响哈。
不过楼主好牛B 抄了284遍 有没有抄错哦
对 我现在怀疑你抄错了
|
能力值:
( LV4,RANK:40 )
|
-
-
7 楼
内存属性.exe
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
不会吧,检查好几遍了 帮我看看还有什么其他的原因,蓝屏蓝怕了
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
想到一个循环的方法填充数组,结果成功了
可能上面真的是抄错了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
但是新的问题出现了
SSDT HOOK又跑去我的表上HOOK
怎么办,听说要HOOK KiFastCallEntry才行,具体怎么操作
|
能力值:
( LV12,RANK:270 )
|
-
-
11 楼
这样做没意思啊,自己从文件中获取SSDT中函数原始地址吧,前一段时间发过相关源码~~~
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
怎样hook KiFastCallEntry 让它指向我的表
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
怎么就没有看到相关的代码的啊
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
前段时间一天蓝屏10多次的人路过...
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
建议楼至使用虚拟机和影子系统研究,这样即使出错也不会有什么损失。
|
|
|