zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
阅读:1331回复:5

在精华区中的文章<隐藏任意进程,目录/文件,注册表,端口>

楼主#
更多 发布于:2003-12-08 09:54
中编写的隐藏目录的函数是不是在DriverEntry(驱动入口)中调用呢??可是是怎样调用的呢??那位高手能告诉我吗????

最新喜欢:

YiXiongYiXion...
zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-12-09 00:32
我是这样写的,请大家看看我写的对吗???
//驱动入口
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
ULONG i;
DGBGPRINT(\"驱动入口\");
DriverObject->DriverUnLoad=DirUnLoad;
for(i=0;i<=IRP_MJ_MAXIMUM_FUNCTION;i++)
{
DriverObject->MajorFunction=DispatchFun;//分发函数
}

}


//IRP分发函数
NTSTATUS DispatchFun(IN PDRIVER_OBJECT DriverObject,
IN PIRP Irp)
{
NTSTATUS rc;
PIO_STACK_LOCATION IrpStack;
PIO_STACK_LOCATION NextIrpStack;
//定义ANSI的文件名
ANSI_STRING ansiFileName;
//定义UNI的文件名
UNICODE_STRING uniFileName;
//得到当前的I/O栈单元
IrpStack=IoGetCurrentIrpStackLocation(Irp);

//分发IRP
switch(IrpStack->MajorFunction)
{
case IRP_MJ_DIRECTORY_CONTROL:
{
if(IrpStack->MinorFunction == IRP_MN_QUERY_DIRECTORY)
{
//调用目录隐藏函数,对目录进行隐藏
HookZwQueryDirectoryFile(.....);
}
}

}

}


可是函数//目录隐藏函数
NTSTATUS HookZwQueryDirectoryFile(IN HANDLE hFile,
 IN HANDLE hEvent OPTIONAL,
 IN PIO_APC_ROUTINE IoApcRoutine OPTIONAL,
 IN PVOID IoApcContext OPTIONAL,
 OUT PIO_STATUS_BLOCK pIoStatusBlock,
 OUT PVOID FileInformationBuffer,
 IN ULONG FileInformationBufferLength,
 IN FILE_INFORMATION_CLASS FileInfoClass,
 IN BOOLEAN bReturnOnlyOneEntry,
 IN PUNICODE_STRING PathMask OPTIONAL,
 IN BOOLEAN bRestartQuery) ;
的这些参数都是什么意思呢?我应该传什么呢???


 
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2003-12-09 09:25
你采用HOOK NATIVE API的方法,在什么地方都可以,DRIVERENTRY处没问题,还有你要做的很家但简单,以原来的参数调用原来的ZwQueryDirectoryFile,然后在返回结果的OUT PVOID FileInformationBuffer,查看是否是要隐藏的东西,不是直接返回,是的话清0,然后返回失败标志即可。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-10 13:39
请问一下我在使用ZwQueryDirectoryFile在进行编译的时候系统提示没有定义这个函数,这是为什么呢??要使用它需要使用什么头文件呢???
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2003-12-11 13:10
可能WINDOWS没有引出吧,不清楚。。。。。。,可以考虑动态获得地址,然后用HOOKPE的方法
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
zgc7622
驱动小牛
驱动小牛
  • 注册日期2003-02-24
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分136分
  • 威望15点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-12-11 16:44
我的程序现在可以进入NTSTATUS HookZwQueryDirectoryFile函数中了,可是在执行rc = (RealZwQueryDirectoryFile)(
hFile,hEvent,IoApcRoutine,IoApcContext,pIoStatusBlock,FileInformationBuffer,FileInformationBufferLength,FileInfoClass,
bReturnOnlyOneEntry,PathMask,bRestartQuery);
的时候返回的rc总是不正确的,我怀疑是我调用HookZwQueryDirectoryFile的时候的问题,我的代码是:

DbgPrint(\"入口\\n\");
RealZwQueryDirectoryFile = (REALZWQUERYDIRECTORYFILE)(*(((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase + 0x97));
*(((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase + 0x97) = HookZwQueryDirectoryFile;
其中我不明白)(*(((PServiceDescriptorTableEntry)KeServiceDescriptorTable)->ServiceTableBase + 0x97));是作什么的。(我的代码是根据LornWolf的隐藏进程改编的,可是不知道改的对不对) 。谢谢各位打下了
游客

返回顶部