|
以下代码由ChatGPT生成,我稍加修改了一下。只要把代码复制下来命名为***.c即可使用WDK7编译。
- #include <ntddk.h>
- void LoadImageNotifyRoutine
- (
- PUNICODE_STRING FullImageName,
- HANDLE ProcessId,
- PIMAGE_INFO ImageInfo
- )
- {
- if (!FullImageName || !ImageInfo->SystemModeImage)
- {
- return;
- }
- if (wcsstr(FullImageName->Buffer, L".sys"))
- {
- UNICODE_STRING source, destination;
- OBJECT_ATTRIBUTES attr;
- IO_STATUS_BLOCK ioStatus;
- HANDLE sourceHandle, destHandle;
- //注意:不建议使用如此大的局部变量,应该动态申请空间。AI可能偷懒了。
- WCHAR destinationPath[260] = L"\\??\\C:\";
- wcscat(destinationPath, wcsrchr(FullImageName->Buffer, L'\\') + 1);
- RtlInitUnicodeString(&source, FullImageName->Buffer);
- RtlInitUnicodeString(&destination, destinationPath);
- InitializeObjectAttributes(&attr, &source, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
- 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)))
- {
- InitializeObjectAttributes(&attr, &destination, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL);
- 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)))
- {
- //注意:不建议使用如此大的局部变量,应该动态申请空间。AI可能偷懒了。
- UCHAR buffer[4096];
- ULONG bytesRead, bytesWritten;
- while (NT_SUCCESS(ZwReadFile(sourceHandle, NULL, NULL, NULL, &ioStatus, buffer, sizeof(buffer), NULL, NULL)) && ioStatus.Information > 0)
- {
- bytesRead = (ULONG)ioStatus.Information;
- ZwWriteFile(destHandle, NULL, NULL, NULL, &ioStatus, buffer, bytesRead, NULL, NULL);
- }
- ZwClose(destHandle);
- }
- ZwClose(sourceHandle);
- }
- }
- }
- void DriverUnload(PDRIVER_OBJECT DriverObject)
- {
- PsRemoveLoadImageNotifyRoutine(LoadImageNotifyRoutine);
- }
- NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
- {
- UNREFERENCED_PARAMETER(RegistryPath);
- DriverObject->DriverUnload = DriverUnload;
- return PsSetLoadImageNotifyRoutine(LoadImageNotifyRoutine);
- }
复制代码
为啥我要发这个帖子呢?原因在这: |
|