内核驱动
zyorz
这个作者很懒,什么都没留下…
展开
-
驱动理解备忘录
驱动层次结构NT式以及WDM驱动都可以分层,即设备创建时,先创建底层PDO(物理设备对象,PNP管理器创建),随后创建高层FDO(功能设备对象,IoCreateDevice创建)。垂直遍历设备对象: 底层设备对象寻找上一层设备对象,通过对象结构体内AttachedDevice成员从下往上寻找上一层设备对象。若想从上向下寻找,则需要在自定义设备扩展中保存低一层设备对象。水平遍历设备对象: 同一...原创 2020-06-01 18:29:49 · 271 阅读 · 0 评论 -
驱动开发笔记
gayhub:https://github.com/JKornev/hidden进程保护进程保护通过ObRegisterCallbacks进程线程对象回调实现。在进程对象Pre回调中获取打开进程句柄的进程ID(PsGetCurrentProcessId())以及被打开的进程ID(PsGetProcessId(OperationInformation->Object)),根据规则决定是否放...原创 2020-04-25 11:14:56 · 335 阅读 · 0 评论 -
关键寄存器备忘录
gs 寄存器fs寄存器在x64下变为gs寄存器R3下gs存放的是TEBR0下存放的是KPCR(记录每个CPU的状态,结构体中存储了GDT,IDT等重要的信息),MSR 寄存器MSR 总体来是为了设置CPU 的工作环境和标示CPU 的工作状态,包括温度控制,性能监控等可以分别通过RDMSR 和WRMSR 两条指令进行读和写的操作,可通过其0xC0000082找到syscall获取SSDT...转载 2019-11-28 14:19:50 · 284 阅读 · 0 评论 -
文件短名转长名
主要实现函数为ZwQueryDirectoryFile,如果要转换一个文件名称为”c:\progam\a~1\b~1\hi~1.txt”的短名,需要先打开”c:\progam”获取其句柄作为函数第一个参数传入,之后将”a~1”作为函数倒数第二个参数传入,从函数第六个参数传入的缓冲区获取长名之后继续获取下一层短名,直至获取完成。通过cmd命令 dir /x 可查询短名封装函数如下,ConverSho转载 2017-04-19 16:45:12 · 526 阅读 · 0 评论 -
盘符设备名互相转换
主要实现函数为ZwOpenSymbolicLinkObject和ZwQuerySymbolicLinkObject。第一个函数用于打开符号链接,第二个函数将设备名保存到缓冲区中。函数入口为QuerySymbolicLink#include <ntddk.h>#include <windef.h>#include <ntstrsafe.h>//输入\\??\\c:-->\\device\\\har转载 2017-04-19 17:26:56 · 2955 阅读 · 0 评论