首页
社区
课程
招聘
[求助]delphi hook ZwCreateFile 蓝屏
发表于: 2014-6-23 15:28 4657

[求助]delphi hook ZwCreateFile 蓝屏

2014-6-23 15:28
4657
用EASYSYS 可以 编译成功 下载地址
http://bbs.pediy.com/showthread.php?t=75863

尝试了各种办法 还是蓝屏 我是 菜鸟 哈哈 帮我看看
 unit wxCreateFile;
interface
uses
nt_status, ntoskrnl, native, ntddk;

function _DriverEntry(DriverObject: PDriverObject; RegistryPath:
PUnicodeString): NTSTATUS; stdcall;

type
TZwCreateFile = function(FileHandle: PHANDLE; DesiredAccess: ACCESS_MASK; ObjectAttributes: POBJECT_ATTRIBUTES;
IoStatusBlock: PIO_STATUS_BLOCK;
AllocationSize: PLARGE_INTEGER; FileAttributes: ULONG; ShareAccess: ULONG; CreateDisposition: ULONG; CreateOptions:
ULONG; EaBuffer: PVOID; EaLength: ULONG): NTSTATUS; stdcall;

var
POldCreateFile: PLong; //保存NTDebugActiveProcess函数在SSDT表中的指针。
OldCreateFileAdd: PLong; //保存原来的NTDebugActiveProcess函数的地址。
OldZwCreateFile: TZwCreateFile;

implementation

function MzwCreateFile(FileHandle: PHANDLE; DesiredAccess: ACCESS_MASK; ObjectAttributes: POBJECT_ATTRIBUTES;
IoStatusBlock: PIO_STATUS_BLOCK;
AllocationSize: PLARGE_INTEGER; FileAttributes: ULONG; ShareAccess: ULONG; CreateDisposition: ULONG; CreateOptions:
ULONG; EaBuffer: PVOID; EaLength: ULONG): NTSTATUS; stdcall;
var
nt_Status: NTSTATUS;
begin
nt_Status := OldZwCreateFile(FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock,
AllocationSize, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength);
Result := nt_Status;
end;

procedure DriverUnload(DriverObject: PDriverObject); stdcall;
begin
asm //关中断
cli
mov eax,cr0
and eax,not $10000
mov cr0,eax
end;
POldCreateFile^ := ULong(OldCreateFileAdd); //恢复SSDT
asm //开中断
mov eax,cr0
or eax,$10000
mov cr0,eax
sti
end;
//DbgPrint('DriverUnload(DriverObject:0x%.8X)',[DriverObject]);
//DbgPrint('DriverUnload(-)',[]);
end;

function _DriverEntry(DriverObject: PDriverObject; RegistryPath:
PUnicodeString): NTSTATUS; stdcall;
begin
DriverObject^.DriverUnload := @DriverUnload;
POldCreateFile := Pointer(ULONG(KeServiceDescriptorTable.ServiceTableBase) + $25
* 4);
OldCreateFileAdd := Pointer(POldCreateFile^);
asm //关中断
cli
mov eax,cr0
and eax,not $10000
mov cr0,eax
end;
POldCreateFile^ := ULong(@MzwCreateFile);
asm //开中断
mov eax,cr0
or eax,$10000
mov cr0,eax
sti
end;
Result := STATUS_SUCCESS;
 
end;
end.


按照 http://bbs.pediy.com/showthread.php?t=50052 的办法修改的

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人帮下忙吗
2014-6-23 16:20
0
雪    币: 608
活跃值: (648)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
论坛很少人用Delphi了,况且你还是放的Delphi写的驱动。
你这个用的是那个版本的驱动包编译的也不说,编译环境也不放,别人怎么给你看?
2014-6-23 16:25
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用EASYSYS 的 我放的有 附件  是啊我 就是想HOOK  zwCreateFile   禁止文件的创建 所以 哈哈 就会点DELPHI
2014-6-23 16:48
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
编译环境 指的的是什么意思哈 我菜鸟
2014-6-23 16:52
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
var
nt_Status: NTSTATUS;
begin
nt_Status := OldZwCreateFile(FileHandle, DesiredAccess, ObjectAttributes, IoStatusBlock,
AllocationSize, FileAttributes, ShareAccess, CreateDisposition, CreateOptions, EaBuffer, EaLength);
Result := nt_Status;
end;
直接用 返回值就不会蓝屏很郁闷
2014-6-23 18:08
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Result := STATUS_SUCCESS;  就不会蓝屏
2014-6-23 18:10
0
雪    币: 195
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
找人帮帮忙啊
2014-6-23 20:12
0
游客
登录 | 注册 方可回帖
返回
//