首页
社区
课程
招聘
[求助]undocumented windows nt中ssdt hook
发表于: 2009-11-26 17:00 4100

[求助]undocumented windows nt中ssdt hook

2009-11-26 17:00
4100
其中
typedef struct ServiceDescriptorTable {
PVOID ServiceTableBase;
PVOID ServiceCounterTable(0);
unsigned int NumberOfServices;
PVOID ParamTableBase;
}

typedef NTSTATUS (*NTCREATEFILE)(
PHANDLE FileHandle,
ACCESS_MASK DesiredAccess,
POBJECT_ATTRIBUTES ObjectAttributes,
PIO_STATUS_BLOCK IoStatusBlock,
PLARGE_INTEGER AllocationSize OPTIONAL,
ULONG FileAttributes,
ULONG ShareAccess,
ULONG CreateDisposition,
ULONG CreateOptions,
PVOID EaBuffer OPTIONAL,
ULONG EaLength
);

#define SYSTEMSERVICE(_function)

KeServiceDescriptorTable.ServiceTableBase[*(PULONG)((PUCHAR)_function+1)]

NTCREATEFILE OldNtCreateFile;

NTSTATUS HookServices()
{
OldNtCreateFile=(NTCREATEFILE)(SYSTEMSERVICE(ZwCreateFile));

_asm cli

(NTCREATEFILE)(SYSTEMSERVICE(ZwCreateFile))=NewNtCreateFile;

_asm sti

return STATUS_SUCCESS;
}

这个编译说
cannot convert from 'NTSTATUS (__stdcall *)(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG)' to 'ZWCREATEFILE'
还有一个,退出驱动时负回正确值时说这个语句
(ZWCREATEFILE)(SYSTEMSERVICE(ZwCreateFile)) = OldZwCreateFile;
error C2106: '=' : left operand must be l-value

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
这个问题跟驱动半点关系没有~
2009-11-26 17:44
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
已经解决了,把文件换成.c 就可以通过编译了,C++类型转换比较严格吧,可能。
2009-11-26 18:46
0
游客
登录 | 注册 方可回帖
返回
//