cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
阅读:2490回复:10

请朋友们帮一下,不胜感激:用HOOK的方法怎么才能钩到文件删除和重命名呢?只读和删除得实现了,请看内容...

楼主#
更多 发布于:2003-10-27 21:27
我现在钩ZwWriteFile和ZwSetInformationFile能实现文件的防止修改和删除,但文件的重命名和覆盖怎么办??

本来想再钩住ZwQueryInformationFile,在文件取得信息中,把文件属性改成正在打开,不过怎么都得不到当前正在操作的文件名,而是得到系统\\fonts目录下的文件,真是晕呀,哪位能帮我解答一下,谢谢了!!,下面是我的HookZwQueryInformationFile代码,是不是有问题?(请不要怀疑是内存分配的问题,我在别的函数中都能用此方法得到文件名)

rc = ((REALZWQUERYINFORMATIONFILE)(RealZwQueryInformationFile))( FileHandle,
IoStatusBlock,
FileInformation,
Length,
FileInformationClass);
if( !NT_SUCCESS(rc ))
{
return(rc);
}

//删除操作
if( Length ==sizeof( FILE_BASIC_INFORMATION ))
{
PUNICODE_STRING puniFileName;
ANSI_STRING ansiFileName;
IO_STATUS_BLOCK MyIoStatusBlock;

PFILE_NAME_INFORMATION NameInfo;
NameInfo = (PFILE_NAME_INFORMATION)ExAllocatePool( PagedPool, sizeof(FILE_NAME_INFORMATION)*256);
ntStatus = ((REALZWQUERYINFORMATIONFILE)(RealZwQueryInformationFile))( FileHandle,
 &MyIoStatusBlock,
 NameInfo,
 sizeof(FILE_NAME_INFORMATION)*256,
 FileNameInformation );
if( NT_SUCCESS(ntStatus))
{
PWSTR pTemp = (PWSTR)ExAllocatePool( PagedPool, sizeof(PWSTR)*NameInfo->FileNameLength);
DbgPrint(\"Get file information!\\n\");
puniFileName = (PUNICODE_STRING)ExAllocatePool( PagedPool, sizeof( UNICODE_STRING));
puniFileName->Buffer = pTemp;
RtlCopyMemory( puniFileName->Buffer, NameInfo->FileName, NameInfo->FileNameLength);
puniFileName->Length = NameInfo->FileNameLength;
puniFileName->MaximumLength = NameInfo->FileNameLength;
RtlUnicodeStringToAnsiString( &ansiFileName, puniFileName, TRUE);
//做测试用为E:上的特定文
if( ansiFileName.Length ==33)
{
DbgPrint(\"Delete file Name: %s\\n\", ansiFileName.Buffer);//就是这个得到的都是system\\fonts下的文件
}
ExFreePool( puniFileName);
ExFreePool( pTemp);
RtlFreeAnsiString( &ansiFileName);

}
if( NameInfo !=NULL)
{
ExFreePool( NameInfo);
}
}

最新喜欢:

cyliucyliu
liwashington
驱动小牛
驱动小牛
  • 注册日期2004-04-30
  • 最后登录2010-10-21
  • 粉丝0
  • 关注0
  • 积分-11分
  • 威望98点
  • 贡献值1点
  • 好评度12点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-03 11:12
楼主的文件重命名问题是如何解决的呢?我试过用ZwSetInformationFile这个函数来给文件重命名,但是DDK中说它没有FileNameInformation这个参数呀,我强行给这个参数系统提示说“有一个参数错误”。
我只想有个好老婆,每天有几顿好饭吃……
cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-29 12:57
vcmfc:
你还没帮我回答问题呢,:(
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-29 09:38
[quote]保护是相对的。

我写一个跟pjf一样的东东,让所有HOOK/ifs filter全部无效。不管你如何保护,照删除,照读,除非你加密,否则全是.......。 :D :D :D :D

是不是找到那些驱动的ATTACHEDDEVIDE然后全清0啊?? [/quote]


如果这样做,会产生什么后果呢????


感谢 pjf大哥的长期指点,兄弟在这里谢谢你了。



回去了。
cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-10-29 08:58
早上好,同学们
帮我把覆盖的问题解决了再说呀
致敬!
:(
:(
:(

wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2003-10-28 22:56
保护是相对的。

我写一个跟pjf一样的东东,让所有HOOK/ifs filter全部无效。不管你如何保护,照删除,照读,除非你加密,否则全是.......。 :D :D :D :D

是不是找到那些驱动的ATTACHEDDEVIDE然后全清0啊??
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-28 15:42
感谢VCMFC,现在重命名的问题解决了.
谁能详细说一下,文件防止文件被覆盖的文件?
cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-28 14:07
有请 VCMFC:

还是得到问到文件名的问题?
obQueryName是什么函数,我怎么没找到?还有在ZwSetInformationFile里如何判断是改名操作呢
cbns888
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2009-04-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望64点
  • 贡献值0点
  • 好评度60点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-10-28 13:42
知道老大牛呢,不过公司的产品总要完成先,苦命
我还是一个一个来解决吧,再问一下:我也发现了改名的时候要了ZwSetInformationFile,难不成返回错误的值?

vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-10-28 13:05
保护是相对的。

我写一个跟pjf一样的东东,让所有HOOK/ifs filter全部无效。不管你如何保护,照删除,照读,除非你加密,否则全是.......。 :D :D :D :D
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-10-28 13:03
用obQueryName得到文件名,再不行用hash方法。实在不行,去找那堆参考源程序,没有不行的。

重命名是在ZwSetInformationFile,


覆盖是ZwCreateFile/ZwOpenFile,


先去熟悉win32 storage API的用法再hook,

游客

返回顶部