中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

HOOK了NtCreateFile后如何獲取被操作文件名

小億
124
2023-12-20 17:10:46
欄目: 編程語言

要獲取被操作的文件名,您可以在HOOK的回調函數中進行操作。具體步驟如下:
1. 在您的HOOK回調函數中,獲取`NtCreateFile`函數的參數,包括`FileObject`和`FileName`。
2. 使用`ObReferenceObjectByHandle`函數將`FileObject`轉換為文件對象。
3. 使用`IoFileObjectType`對象的`FileObject->FileName`成員獲取文件名。
下面是一個示例代碼,演示了如何獲取被操作文件的文件名:

NTSTATUS NtCreateFileHook(

????OUT?PHANDLE?FileHandle,

????IN?ACCESS_MASK?DesiredAccess,

????IN?POBJECT_ATTRIBUTES?ObjectAttributes,

????OUT?PIO_STATUS_BLOCK?IoStatusBlock,

????IN?PLARGE_INTEGER?AllocationSize?OPTIONAL,

????IN?ULONG?FileAttributes,

????IN?ULONG?ShareAccess,

????IN?ULONG?CreateDisposition,

????IN?ULONG?CreateOptions,

????IN?PVOID?EaBuffer?OPTIONAL,

????IN?ULONG?EaLength ) {

????//?調用原始的NtCreateFile函數

????NTSTATUS?status?=?OriginalNtCreateFile(

????????FileHandle,

????????DesiredAccess,

????????ObjectAttributes,

????????IoStatusBlock,

????????AllocationSize,

????????FileAttributes,

????????ShareAccess,

????????CreateDisposition,

????????CreateOptions,

????????EaBuffer,

????????EaLength

????);

????//?獲取被操作的文件名

????if?(NT_SUCCESS(status))

????{

????????PFILE_OBJECT?fileObject;

????????status?=?ObReferenceObjectByHandle(*FileHandle,?FILE_READ_ATTRIBUTES,?*IoFileObjectType,?

????????KernelMode,?(PVOID*)&fileObject,?NULL);

????????if?(NT_SUCCESS(status))

????????{

????????????UNICODE_STRING?fileName?=?fileObject->FileName;

????????????//?在這里進行你的處理,例如輸出文件名

????????????DbgPrint(“%wZ\n”,?&fileName);

????????????ObDereferenceObject(fileObject);

????????}

????}

????return?status; }

請注意,這只是一個示例代碼,用于說明如何在HOOK NtCreateFile后獲取被操作的文件名。實際應用中,您需要根據具體的需求進行修改和完善。

0
枣强县| 兰坪| 徐水县| 聂拉木县| 垫江县| 沭阳县| 商都县| 青海省| 中江县| 长子县| 蓬溪县| 敦化市| 侯马市| 阳信县| 平罗县| 汾阳市| 肇东市| 武邑县| 泗阳县| 虎林市| 晋城| 邢台县| 迁西县| 唐山市| 阿拉尔市| 尼勒克县| 玛纳斯县| 策勒县| 大方县| 百色市| 和龙市| 常德市| 青川县| 金湖县| 景洪市| 丹东市| 邵阳市| 佛学| 淮南市| 娄底市| 大化|