大神进,内核级程序设计

yiyefangzhou24 2011-02-23 07:40:24
请大神帮我看看这段代码为什么会有3个warning?我是初学者写的不好的地方请不要嘲笑
[code=C]/C++
#include<ntddk.h>

#pragma pack(1)

typedef struct _ServiceDescriptorEntry {
unsigned int *ServiceTableBase; //系统服务数组表
unsigned int *ServiceCounterTableBase; //数组使用计数
unsigned int NumberOfServices; //服务数量
unsigned char *ParamTableBase; //服务参数数目表
}ServiceDescriptorTableEntry, *PServiceDescriptorTableEntry;

#pragma pack()
#define SYSNAME "System"
ULONG gProcessNameOffset;
ULONG ProcessNameOffset = 0; //进程名偏移量
ULONG GetProcessNameOffset();
BOOLEAN GetProcess( PCHAR Name );


extern PServiceDescriptorTableEntry KeServiceDescriptorTable;


typedef struct _ServiceDescriptorEnty
{
unsigned int *ServiceTableBase;
unsigned int *ServiceCounterTableBase;
unsigned int NumberOfServices;
unsigned char *ParamTableBase;
}ServiceDescripforTableEnty, *PServiceDescriptorTableEnty;


NTSTATUS ZwOpenProcess(PHANDLE ProcessHandle,ACCESS_MASK DesiredAcces,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId);

NTSTATUS HookZwOpenProcess(PHANDLE ProcessHandle,ACCESS_MASK DesiredAcces,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId);



NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
{
_asm
{
cli;
mov eax,cr0;
and eax,0fffeffffh;
mov cr0,eax;
}

((PServiceDescriptorTableEnty)KeServiceDescriptorTable)->ServiceTableBase[*(PULONG)((PUCHAR)ZwOpenProcess+1)]=HookZwOpenProcess;

_asm
{
cli;
mov eax,cr0;
and eax,0x10000;
mov cr0,eax;
}

//driver->DriverUnload=DriverUnload;
//return STATUS_SUCCESS;
return STATUS_SUCCESS;
}


NTSTATUS HookZwOpenProcess(PHANDLE ProcessHandle,ACCESS_MASK DesiredAccess,POBJECT_ATTRIBUTES ObjectAttributes,PCLIENT_ID ClientId)
{
NTSTATUS rc=NULL;
ULONG dwPID;
//rc=(NTSTATUS)(REALZWOPENPROCESS)RealZwOpenProcess(ProcessHandle,DesiredAccess,ObjectAttributes,ClientId);
if(ClientId!=NULL)
{
dwPID=(ULONG)ClientId->UniqueProcess;
if(dwPID==2344)
{
DbgPrint("PID 2344 has been accessed,need forbidden");
ProcessHandle=0;
rc=STATUS_ACCESS_DENIED;
}
}
return rc;
}






[/code]
...全文
249 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yiyefangzhou24 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 majia2011 的回复:]
cli;
cli;

哥哥,你不蓝才怪,cli两次,你也太狠了,你没理解代码的含义啊

明显是抄的代码,自己写吧
[/Quote]
抄来的还要问么?cli两次是有原因的,你仔细看了吗?第一次去除保护,第二次恢复保护,唯一被你说中的就是蓝屏了,还不知道错在哪
majia2011 2011-02-28
  • 打赏
  • 举报
回复
cli;
cli;

哥哥,你不蓝才怪,cli两次,你也太狠了,你没理解代码的含义啊

明显是抄的代码,自己写吧
太乙 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yiyefangzhou24 的回复:]

还好有人回帖,不然结贴都不好结。warning如下;
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

hook.c(38) : warning 28101: The Drivers module has inferred that the……
[/Quote]这个应该没关系吧,warning也没有说什么别的信息,看起来应该没问题!
cnbragon 2011-02-28
  • 打赏
  • 举报
回复
这个没关系的,warning里说了这只是个信息,可以忽略
可以把蓝屏的dump文件发给我帮你看看,要有pdb哦
yiyefangzhou24 2011-02-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sophy520eangel 的回复:]
你的代码不完整,可以把你的完整工程文件发我的邮箱:swzices@yahoo.com我修改注释后再发给你,或者自己百度下,其实任何一个SSFT HOOK工程都是可以参考的

你这段代码,进程名的偏移如果是本机测试可以通过windbg直接获取NtOpenProcess(ZwOpenProcess最后是调用SSDT表中的Ntxx的)的索引

卸载函数最好加上,在你完成HOOK后恢复SSDT表是……
[/Quote]
这位大神我这是感谢,我会把我的完整修改后的代码发到你的邮箱,还请您指点一二
sophy520eangel 2011-02-25
  • 打赏
  • 举报
回复
你的代码不完整,可以把你的完整工程文件发我的邮箱:swzices@yahoo.com我修改注释后再发给你,或者自己百度下,其实任何一个SSFT HOOK工程都是可以参考的

你这段代码,进程名的偏移如果是本机测试可以通过windbg直接获取NtOpenProcess(ZwOpenProcess最后是调用SSDT表中的Ntxx的)的索引

卸载函数最好加上,在你完成HOOK后恢复SSDT表是应该的

最好用RKU或者别的rootkit软件看下ZwOperProcess是否被Hook了
--------------
驱动编程需要细心
yiyefangzhou24 2011-02-25
  • 打赏
  • 举报
回复
还好有人回帖,不然结贴都不好结。warning如下;
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)

hook.c(38) : warning 28101: The Drivers module has inferred that the current function is a DRIVER_INITIALIZE function: This is informational only. No problem has been detected.
Found in function 'DriverEntry'
38
内核级的编程论坛上恢复的人很少,在这之后我有加上了卸载函数,DriverObject->DriverUnload=DriverUnload();但是warning还是存在,并且安装后启动服务的时候蓝屏,再挂几天,但愿遇上高人。
pstrunner 2011-02-24
  • 打赏
  • 举报
回复
warning呢?
yiyefangzhou24 2011-02-23
  • 打赏
  • 举报
回复
连大神也没有??
我又要悲剧了?
yiyefangzhou24 2011-02-23
  • 打赏
  • 举报
回复
这个代码标签为什不好用了?请论坛赶紧修复啊
另注:编译器为WDK自带编译器XP X86编译器

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧