找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 321|回复: 4

[开源]使用LoadImageNotifyRoutine抓取别人的驱动

[复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2025-3-3 00:02:26 | 显示全部楼层 |阅读模式
以下代码由ChatGPT生成,我稍加修改了一下。只要把代码复制下来命名为***.c即可使用WDK7编译。
  1. #include <ntddk.h>

  2. void LoadImageNotifyRoutine
  3. (
  4.         PUNICODE_STRING FullImageName,
  5.         HANDLE ProcessId,
  6.         PIMAGE_INFO ImageInfo
  7. )
  8. {
  9.         if (!FullImageName || !ImageInfo->SystemModeImage)
  10.         {
  11.                 return;
  12.         }
  13.         if (wcsstr(FullImageName->Buffer, L".sys"))
  14.         {
  15.                 UNICODE_STRING source, destination;
  16.                 OBJECT_ATTRIBUTES attr;
  17.                 IO_STATUS_BLOCK ioStatus;
  18.                 HANDLE sourceHandle, destHandle;       
  19.                 //注意:不建议使用如此大的局部变量,应该动态申请空间。AI可能偷懒了。
  20.                 WCHAR destinationPath[260] = L"\\??\\C:\";
  21.                 wcscat(destinationPath, wcsrchr(FullImageName->Buffer, L'\\') + 1);
  22.                 RtlInitUnicodeString(&source, FullImageName->Buffer);
  23.                 RtlInitUnicodeString(&destination, destinationPath);
  24.                 InitializeObjectAttributes(&attr, &source, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
  25.                 if (NT_SUCCESS(ZwCreateFile(&sourceHandle, GENERIC_READ, &attr, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN, FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0)))
  26.                 {
  27.                         InitializeObjectAttributes(&attr, &destination, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
  28.                         if (NT_SUCCESS(ZwCreateFile(&destHandle, GENERIC_WRITE, &attr, &ioStatus, NULL, FILE_ATTRIBUTE_NORMAL, 0, FILE_OVERWRITE_IF, FILE_NON_DIRECTORY_FILE | FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0)))
  29.                         {
  30.                                 //注意:不建议使用如此大的局部变量,应该动态申请空间。AI可能偷懒了。
  31.                                 UCHAR buffer[4096];
  32.                                 ULONG bytesRead, bytesWritten;
  33.                                 while (NT_SUCCESS(ZwReadFile(sourceHandle, NULL, NULL, NULL, &ioStatus, buffer, sizeof(buffer), NULL, NULL)) && ioStatus.Information > 0)
  34.                                 {
  35.                                         bytesRead = (ULONG)ioStatus.Information;
  36.                                         ZwWriteFile(destHandle, NULL, NULL, NULL, &ioStatus, buffer, bytesRead, NULL, NULL);
  37.                                 }
  38.                                 ZwClose(destHandle);
  39.                         }
  40.                         ZwClose(sourceHandle);
  41.                 }
  42.         }
  43. }

  44. void DriverUnload(PDRIVER_OBJECT DriverObject)
  45. {
  46.         PsRemoveLoadImageNotifyRoutine(LoadImageNotifyRoutine);
  47. }

  48. NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
  49. {
  50.         UNREFERENCED_PARAMETER(RegistryPath);
  51.         DriverObject->DriverUnload = DriverUnload;
  52.         return PsSetLoadImageNotifyRoutine(LoadImageNotifyRoutine);
  53. }
复制代码

为啥我要发这个帖子呢?原因在这:
游客,如果您要查看本帖隐藏内容请回复

8

主题

31

回帖

0

精华

铜牌会员

积分
129
发表于 2025-3-3 18:46:09 | 显示全部楼层
本帖最后由 jinfu 于 2025-3-3 18:48 编辑

666,被抓驱动特征是容易被进检测黑名单的。

3

主题

122

回帖

0

精华

铜牌会员

积分
291
发表于 2025-3-4 02:06:34 | 显示全部楼层
看看发这个帖子的原因

0

主题

11

回帖

0

精华

初来乍到

积分
11
发表于 2025-3-10 07:24:56 | 显示全部楼层
学习一下

0

主题

16

回帖

0

精华

铜牌会员

积分
48
发表于 2025-4-2 21:53:45 | 显示全部楼层
来看看
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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