《Windows内核安全与驱动开发》-学习笔记3
内核学习真的很枯燥,今天本来打算继续向下学习,可是出门就碰到了钉子。内核的字符串拼接感觉很麻烦,可能也是我函数用的不熟的原因的吧,不知道各位有没有碰到。
例如我想写一个函数 传一个"c:\\" 返回一个"\\??\\c:\\",我的代码如下,感觉太麻烦了,不知道各位怎么处理:
**** Hidden Message *****
look一look 本帖最后由 fishkiss 于 2015-12-1 17:02 编辑
RtlCopyUnicodeString(&Fullpath,&pathHread);
DbgPrint("%wZ", &Fullpath);
这个能打印出来吗?(上面)
RtlAppendUnicodeToString(&Fullpath,pwchar_path);
DbgPrint("%wZ", &Fullpath);
这个呢?(上面)
ExFreePool(Fullpath.Buffer);
DbgPrint("%wZ", &Fullpath);
这个不能这么玩的吧。。。(上面)
一眼看上去,你这个分配+6 够吗?\\??\\ fishkiss 发表于 2015-12-1 16:59
RtlCopyUnicodeString(&Fullpath,&pathHread);
DbgPrint("%wZ", &Fullpath);
可以啊,+6是因为“\\??\\”的长度等于6.后面还乘了sizeof(wchar) 本帖最后由 fishkiss 于 2015-12-2 09:12 编辑
codecook 发表于 2015-12-2 08:19
可以啊,+6是因为“\\??\\”的长度等于6.后面还乘了sizeof(wchar)
如果够了,那么前面两个就可以打印出来了吧?
最后一个打印应该不能这么玩吧,那块内存都释放了,不能再拿那个野指针打印了吧? fishkiss 发表于 2015-12-2 09:09
如果够了,那么前面两个就可以打印出来了吧?
最后一个打印应该不能这么玩吧,那块内存都释放了,不 ...
哦,那是打印不出,但不会蓝屏! 看看是什么鬼 帮忙看看
谢谢分享 看看,学习下 我看看 楼主好样的,加油呀
我帐号怎么不是VIP了。 支持lz
1 感谢分享
丹丹 好奇,看看! 本帖最后由 菜鸟dc 于 2016-8-16 14:41 编辑
我记得有函数的,把NT路径改成DOS路径,RtlNtPathNameToDosPathName 应该是这个,在ntdll里面 支持一下了
页:
[1]
2