能力值:
( LV12,RANK:600 )
2 楼
这种方法学习是不错....但用于隐藏文件????不太行啊
能力值:
( LV12,RANK:1010 )
3 楼
写地不错啊。
能力值:
( LV6,RANK:90 )
4 楼
为什么啊
能力值:
( LV13,RANK:1050 )
5 楼
__asm
{
forwArd:
call bAck
}
这句写的精彩。
能力值:
( LV2,RANK:10 )
6 楼
BOOL hook后面少了个分号,
if(NT_SUCCESS(Check()))
{
DbgPrint(" check SUCCESS");
write();
hook=true; //这里好象不能用小写的,hook定义的是BOOL.而不是bool,
}
能力值:
( LV6,RANK:90 )
7 楼
谢谢提醒 我改了 那句其实是后加的 没经编译的
能力值:
( LV2,RANK:10 )
8 楼
我修改了隐藏的文件名,改成一个目录,在XPDDK下编译后,一旦访问到隐藏的目录
就蓝屏重启了。比如,隐藏了目录ABC,一旦在地址栏里输入ABC就BOSD了。
还有令我不解的是:
//return rc;
__asm
{
popad
mov esp,ebp
pop ebp
mov eax,rc
ret 0x2C
}
为什么不用
return rc;
呢?
NtQueryDirectoryFile函数和zwQueryDirectoryFile谁是最底层?感觉两个函数都一样啊。
能力值:
( LV6,RANK:90 )
9 楼
第一个问题 我不知道
还在考虑
第二个问题 因为是nake func 堆栈都要自己平衡
第三个问题 NtQueryDirectoryFile
能力值:
( LV2,RANK:10 )
10 楼
为什么会出现这个 warning 那:
'MyNtQueryDirectoryFile' : function should return a value; 'void' return type assumed
因为这个warning .sys 没有被生成。
我用的是 DDKWizard 的编译环境, 2003 DDK。
能力值:
( LV6,RANK:90 )
11 楼
直接用ddk编译试试
能力值:
( LV6,RANK:90 )
12 楼
能力值:
( LV2,RANK:10 )
13 楼
环境好了。
谢谢LZ 的帮助及分享。
能力值:
( LV2,RANK:10 )
14 楼
不好意思,还得问一下。这个驱动怎么用那。我试了一下:
"RtlInitAnsiString(&HideDirFile,"c:\\Test");" 和
"RtlInitAnsiString(&HideDirFile,"c:\\Test\\Test.txt");"
怎么没有隐藏成功。有什么不对的地方么?
能力值:
( LV2,RANK:10 )
15 楼
这样写:
RtlInitAnsiString(&HideDirFile,"Test");
就可以隐藏任何test目录了。
不能带路径。
我用OD试了一下,在调用NtQueryDirectoryFile函数时,会把上级目录放在FileName参数里,
NTAPI NtQueryDirectoryFile(
IN HANDLE FileHandle,
IN HANDLE Event OPTIONAL,
IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
IN PVOID ApcContext OPTIONAL,
OUT PIO_STATUS_BLOCK IoStatusBlock,
OUT PVOID FileInformation,
IN ULONG Length,
IN FILE_INFORMATION_CLASS FileInformationClass,
IN BOOLEAN ReturnSingleEntry,
IN PUNICODE_STRING FileName OPTIONAL, //上级目录
IN BOOLEAN RestartScan
);
我要对此参数进行过滤要怎么做?比如:当FileName="c:\test"就函数直接反回。我试了N次都是因为FileName的数据类型不能强制转换而不能通过。
UNICODE_STRING uniFileNamenew;
ANSI_STRING FileNamenew;
RtlInitUnicodeString(&uniFileNamenew,FileName);
RtlUnicodeStringToAnsiString(&FileNamenew,&uniFileNamenew,TRUE); if(RtlCompareMemory(FileNamenew.Buffer,HideDirFile.Buffer,HideDirFile.Length ) == HideDirFile.Length)
{
rc=0;
__asm
{
popad
mov esp,ebp
pop ebp
mov eax,rc
ret 0x2C
}
}
大概意思就是上面这段代码,我知道肯定不简单,我C++的数据类型转换不熟,请hfyy大哥看看要怎么改?
能力值:
( LV6,RANK:90 )
16 楼
如果你不做什么操作 返回的rc就是原谅调用NtQueryDirectoryFile返回的NTSTATUS 我想根本看不出什么区别吧