09-08-2009, 12:19 PM
السلام عليكم
1- يعن بواسطة الدريفر ZwLoadDriver حملنا الدريفر ZwDeleteFile المسجل مسبقا في الريجيستري .
2- طريقة كتابة الدالة بالدلفي ؟؟ ... يعني صحيحة لكن أين أضيفها هل في System أم في NtDll
3- الدالة ZwCreateFile و توزظيفها هي نفسها CreateFile في الـ User Mode :
ملاحظة : لكن إذا أردنا أن نستدعيها من الـ User Mode نستعمل NtCreateFile في مكان ZwCreateFile .
المثال :
- بالطبع نتيجة الدالة من NTSTATUS لأن كل رقم مرجع يوافق حالة ما مسجلة مسبقا أو غير مسجلة في الوحدة nt_status كما يمكننا أن نستعمل حاصل دالة IoStatusBlock كالـ IoResult لتحقق من الأخطاء .
- صيغة الدالة (****ا أن تكون صحيحة) :
بالتوفيق ,,
1- يعن بواسطة الدريفر ZwLoadDriver حملنا الدريفر ZwDeleteFile المسجل مسبقا في الريجيستري .
2- طريقة كتابة الدالة بالدلفي ؟؟ ... يعني صحيحة لكن أين أضيفها هل في System أم في NtDll
3- الدالة ZwCreateFile و توزظيفها هي نفسها CreateFile في الـ User Mode :
ملاحظة : لكن إذا أردنا أن نستدعيها من الـ User Mode نستعمل NtCreateFile في مكان ZwCreateFile .
المثال :
كود :
uses
nt_status, ntoskrnl, ntifs, native, winioctl, fcall, macros;
Var
RtnCode: NTSTATUS;
oa: OBJECT_ATTRIBUTES;
iosb: IO_STATUS_BLOCK;
hDirectory: HwnD;
{ function _DriverEntry(pDriverObject:PDRIVER_OBJECT;
pusRegistryPath:PUNICODE_STRING): NTSTATUS; stdcall;}
RtnCode := ZwCreateFile(@hDirectory, SYNCHRONIZE, @oa, @iosb, nil,
FILE_ATTRIBUTE_NORMAL, 0, FILE_OPEN_IF,
FILE_DIRECTORY_FILE + FILE_SYNCHRONOUS_IO_NONALERT,
nil, 0);
if RtnCode = STATUS_SUCCESS then
begin
if iosb.Information = FILE_CREATED then
begin
DbgPrint('FileWorks: Directory created'#13#10);
end else if iosb.Information = FILE_OPENED then
begin
DbgPrint('FileWorks: Directory exists and was opened'#13#10);
end;
ZwClose(hDirectory);
end;- بالطبع نتيجة الدالة من NTSTATUS لأن كل رقم مرجع يوافق حالة ما مسجلة مسبقا أو غير مسجلة في الوحدة nt_status كما يمكننا أن نستعمل حاصل دالة IoStatusBlock كالـ IoResult لتحقق من الأخطاء .
- صيغة الدالة (****ا أن تكون صحيحة) :
كود :
Function [color=Red]ZwCreateFile[/color](FileHandle:PHANDLE; DesiredAccess:ACCESS_MASK;ObjectAttributes:POBJECT_ATTRIBUTES;
IoStatusBlock:PIO_STATUS_BLOCK ;AllocationSize:PLARGE_INTEGER ;
FileAttributes,ShareAccess,CreateDisposition,CreateOptions:ULONG ;
EaBuffer:PVOID;EaLength:ULONG):NTSTATUS;StdCall;بالتوفيق ,,

