请选择 进入手机版 | 继续访问电脑版

IT资源社区(IT0365.COM)

 找回密码
 登记学习
查看: 464|回复: 5

[VC编程] 驱动实现文件复制功能

[复制链接]
发表于 2020-1-2 16:50:56 | 显示全部楼层 |阅读模式

想学习更多破解与编程技巧,就马上加入吧!

您需要 登录 才可以下载或查看,没有帐号?登记学习

x
  • #include <ntddk.h>
  • VOID DriverUnload(PDRIVER_OBJECT pDrv)
  • {
  •     KdPrint(("Driver Unload..."));
  • }
  • NTSTATUS MyCopyFile(UNICODE_STRING uStrSrc, UNICODE_STRING uStrDes)
  • {
  •     NTSTATUS status = STATUS_SUCCESS;
  •     HANDLE hFileSrc,hFileDes;
  •     OBJECT_ATTRIBUTES oaSrc,oaDes;
  •     IO_STATUS_BLOCK ioSrc,ioDes;
  •     WCHAR szBuff[1025] = {0};
  •     LARGE_INTEGER byteoffset = {0};
  •     InitializeObjectAttributes(&oaSrc, &uStrSrc, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE,NULL,NULL);
  •     InitializeObjectAttributes(&oaDes, &uStrDes, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
  •     status = ZwCreateFile(&hFileSrc,SYNCHRONIZE | GENERIC_WRITE | GENERIC_READ,
  •         &oaSrc, &ioSrc, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
  •         FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
  •     if (!NT_SUCCESS(status))
  •     {
  •         KdPrint(("打开文件失败"));
  •         ZwClose(hFileSrc);
  •         return status;
  •     }
  •     status = ZwCreateFile(&hFileDes, SYNCHRONIZE | GENERIC_WRITE | GENERIC_READ,
  •         &oaDes, &ioDes, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
  •         FILE_OPEN_IF, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);
  •     if (!NT_SUCCESS(status))
  •     {
  •         KdPrint(("打开文件失败"));
  •         ZwClose(hFileDes);
  •         return status;
  •     }
  •     byteoffset.QuadPart = 0;
  •     while (1)
  •     {
  •         status = ZwReadFile(hFileSrc, NULL, NULL, NULL, &ioSrc,
  •             szBuff, 1024, &byteoffset, NULL);
  •         if (!NT_SUCCESS(status))
  •         {
  •             if (status == STATUS_END_OF_FILE)
  •             {
  •                 break;
  •             }
  •         }
  •         KdPrint(("%s", szBuff));
  •         status = ZwWriteFile(hFileDes, NULL, NULL, NULL, &ioDes, szBuff, 1024, &byteoffset, NULL);
  •         if (!NT_SUCCESS(status))
  •         {
  •             KdPrint(("写入失败"));
  •             break;
  •         }
  •         byteoffset.QuadPart += ioSrc.Information;
  •     }
  •     ZwClose(hFileSrc);
  •     ZwClose(hFileDes);
  •     KdPrint(("ok"));
  •     return STATUS_SUCCESS;
  • }
  • NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
  • {
  •     UNICODE_STRING uStrSrc;
  •     UNICODE_STRING uStrDes = {0};
  •     RtlInitUnicodeString(&uStrSrc, L"\\??\\c:\\2.txt");
  •     RtlInitUnicodeString(&uStrDes, L"\\??\\c:\\3.txt");
  •     DriverObject->DriverUnload = DriverUnload;
  •     return MyCopyFile(uStrSrc,uStrDes);
  • }

[color=rgb(35, 139, 236) !important]复制代码
IT资源社区 - 免责声明 1、本站会员可发帖,本主题所有言论和图片纯属会员个人意见,与本论坛立场无关.
2、本站所有帖子由该帖子作者发表,该帖子作者享有帖子相关权益.
3、本帖内容来源网友及会员分享和其它网络媒体.
4、本站仅提供学习的平台,所有资料均来自于网络,版权归原创者所有!本站不提供任何保证,并不承担任何法律责任,如果对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除并致以最深的歉意!
5、若因内容问题IT资源社区管理员和版主有权不事先通知发贴者而删除本文.
6、本站教程仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
7、本站邮箱地址:admin@it0365.com
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

发表于 2020-10-22 22:24:15 | 显示全部楼层
感谢大神分享
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

发表于 2020-11-4 08:27:41 | 显示全部楼层

感谢楼主的无私分享!要想IT资源社区好 就靠你我他
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

发表于 2021-2-15 17:31:45 | 显示全部楼层

这东西我收了!谢谢楼主!IT资源社区真好!
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层
这东西我收了!谢谢楼主!
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层

我看不错噢 谢谢楼主!IT资源社区越来越好!
IT资源社区 it0365.com 更多精彩内容等你发现
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 <<--快捷回复】
您需要登录后才可以回帖 登录 | 登记学习

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|Archiver|手机版|小黑屋|IT资源社区(IT0365.COM)

GMT+8, 2021-2-27 20:18 , Processed in 0.043754 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表