Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:8979回复:32

在驱动里面如何对更改文件名?ZwSetInformationFile?

楼主#
更多 发布于:2003-03-20 16:28
在驱动开发网上找到下面这个代码,试了试好像不行

NTSTATUS Rename(PCHAR szFileName1,PCHAR szFileName2)
{
NTSTATUS            status;
CHAR                szFileNameL[MAXPATHLEN];
OBJECT_ATTRIBUTES   oa;
IO_STATUS_BLOCK     iostatus;
HANDLE              hfile =NULL;
UNICODE_STRING      pathnameW;
ANSI_STRING         pathnameA;
PFILE_RENAME_INFORMATION fri;

strcpy(szFileNameL,\"\\\\??\\\\\");
    strcat(szFileNameL,szFileName1);
    RtlInitAnsiString (&pathnameA,szFileNameL );
    RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE);
    InitializeObjectAttributes(&oa, &pathnameW, OBJ_CASE_INSENSITIVE, NULL, NULL);
    status = ZwCreateFile(&hfile,
DELETE,
&oa,
&iostatus,
NULL,
0,
FILE_SHARE_READ,
FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL,0);
RtlFreeUnicodeString(&pathnameW);
    if(!NT_SUCCESS(status))
{
if(hfile) ZwClose(hfile);
   return status;
}

// RtlZeroMemory(szFileName,MAXPATHLEN];
strcpy(szFileNameL,\"\\\\??\\\\\");
strcat(szFileNameL,szFileName2);
RtlInitAnsiString (&pathnameA,szFileNameL );
RtlAnsiStringToUnicodeString(&pathnameW,&pathnameA,TRUE);

fri=ExAllocatePool(NonPagedPool,sizeof(FILE_RENAME_INFORMATION)+pathnameW.Length+1);
fri->FileNameLength=pathnameW.Length;
memcpy(fri->FileName,pathnameW.Buffer,pathnameW.Length);
fri->ReplaceIfExists=0;
fri->RootDirectory=0;
status = ZwSetInformationFile(hfile,
&iostatus,
&fri,
sizeof(fri),
FileDispositionInformation);
RtlFreeUnicodeString(&pathnameW);

if(hfile) ZwClose(hfile);
return status;
}



ZwSetInformationFile好像只能set以下几个information

FileBasicInformation
FileDispositionInformation
FilePositionInformation
FileEndOfFileInformation

郁闷中!

最新喜欢:

ljh1021ljh102... cyliucyliu
好好学习 天天向上
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-03-21 09:21
能做到这步,何不构造个IRP向下值。


我也遇到,就准备使用IRP。



看不懂,能不能说仔细点。。

 :D :D :D
好好学习 天天向上
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-03-21 09:23
Use ZwSetInformationFile with FileRenameInformation as class information. maybe can resolve your problem...
 


Just as you say I have used the FileRenameInformation class,
but I still can\'t resolve my problem!
好好学习 天天向上
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-03-21 09:25
有哪位好心人帮忙看看我的代码?

感激不禁啊!
好好学习 天天向上
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-03-21 20:14
ZwSetInformationFile是不行,



555~~~~~~~~~,看来要用构造IRP了,,,,该死的MS,为什么没有rename??????????



我扁MS!!!!!!!!!



构造irp?
这个我不懂,能不能说说他的工作原理?

我的邮箱是swordbin@163.net,多多指教
好好学习 天天向上
Ice_Bin
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2004-01-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-23 16:10
NtSetInformationFile 是APP层的native API,在kernel不能用。
----------------------------------------------------------
都有,不是同一个。


在驱动开发网上找到下面这个代码,试了试好像不行
----------------------------------------------------------
另外ZwSetInformationFile也可以用,只是你们都没有使用正确的ACCESS_MASK。有一个未公开标志,加上即可。
很简单,自己crack一下吧,不多说了



是不是说zwcreatefile里面的ACCESS_MASK?
应该是设成什么值?
好好学习 天天向上
游客

返回顶部