鱼C论坛

 找回密码
 立即注册
查看: 2628|回复: 1

<Windows内核安全与驱动开发>-学习笔记4

[复制链接]
发表于 2015-12-3 11:48:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 codecook 于 2015-12-3 11:52 编辑

接着复习。
今天写了一个函数,函数的功能是获取文件句柄,可是我不知道通过函数得到的文件句柄,用完再利用ZwClose销毁句柄,这样操作不知道会不会造成内存泄漏,如下:
HANDLE GetFileHandle(WCHAR *pwchar_path)
{        
        //DbgPrint("%S\n",pwchar_path);
        USHORT lnFILEPATH_LENGTH = wcslen(pwchar_path);
        //DbgPrint("%d\n",lnFILEPATH_LENGTH);
        USHORT lnHEAD =4;
        WCHAR *pchar =(PWCHAR)ExAllocatePool(NonPagedPool,(lnFILEPATH_LENGTH +lnHEAD)*2 );
        wcscpy(pchar,L"\\??\");
        wcscpy(pchar+4,pwchar_path);
        HANDLE file_handle=NULL;
        DbgPrint("%S\n",pchar);
        NTSTATUS status;
        IO_STATUS_BLOCK io_status_block;
        OBJECT_ATTRIBUTES object_attributes;
        UNICODE_STRING ufile_name;
        ufile_name.Buffer = pchar;
        //DbgPrint("%d",wcslen(pchar));
        ufile_name.Length =ufile_name.MaximumLength = wcslen(pchar)*2 ;
        DbgPrint("%d\n", wcslen(pchar));
        //DbgPrint("%wZ\n",&ufile_name);

        DbgPrint("%d,%S,%d\n",ufile_name.Length,ufile_name.Buffer,ufile_name.MaximumLength);
        
        InitializeObjectAttributes(&object_attributes,&ufile_name,OBJ_CASE_INSENSITIVE|OBJ_KERNEL_HANDLE,NULL,NULL);
        status=ZwCreateFile(
                &file_handle,
                GENERIC_READ|GENERIC_WRITE,
                &object_attributes,
                &io_status_block,
                NULL,
                FILE_ATTRIBUTE_NORMAL,
                FILE_SHARE_READ,
                FILE_OPEN_IF,
                FILE_NON_DIRECTORY_FILE|FILE_RANDOM_ACCESS|FILE_SYNCHRONOUS_IO_NONALERT,
                NULL,
                0
                );
        //ZwClose(file_handle);
        ExFreePool(pchar);
        return file_handle;
}
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING  RegistryPath)
{
   HANDLE hSrcFile =GetFileHandle(L"c:\\ABAB.txt");
.....
 ZwClose(hSrcFile);
}

同时今天我也学习了一个wcscpy函数,这个函数用来拼接两个字符串比较方便,不知道安全不?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-4 12:06:51 | 显示全部楼层
看起来的确是方便了一点。。但是,就像书上说的那样。。只要你可以保证字符串用结束的话,那就是安全的。。不过我觉得,如果有那个时间都确认这个字符串怎么结束,还不如用那个复杂点的函数。。习惯比较重要一点。。。
至于句柄安全不安全的话,一般是没问题的。。只是最好能自己检查一下。。

你时间到是很多啊。。。我还上班。。

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 09:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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