avatar
文章
331
标签
30
分类
0

Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About
The Blog of Monoceros406
搜索
Home
Archives
Tags
Categories
List
  • Music
  • Movie
Link
About

The Blog of Monoceros406

Windows驱动开发入门-磁盘过滤驱动
发表于2024-05-22|Win驱动开发
Windows驱动开发入门-磁盘过滤驱动碎碎念这个驱动属于boot类型,这类驱动程序是启动最早的驱动程序,系统引导时必须加载完毕。需要在注册表HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\Services下驱动服务的start值需要指定为0。 驱动分析驱动入口DriverEntry1234567891011121314151617181920NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath) { int i; for (i = 0; i <= IRP_MJ_MAXIMUM_FUNCTION; i++) //初始化这个驱动所有的分发函数,默认值是初始化为DPDispatchAny DriverObject->MajorFunction[i] = DPDispatchAny; //下面将我们特殊关注的分发函数重新赋值为我们自己的处理函数 Driver ...
Windows驱动开发入门-磁盘虚拟
发表于2024-05-20|Win驱动开发
Windows驱动开发入门-磁盘虚拟KMDF开发入门项目建立建立后可能报错找不到driver.tmh文件,但能正常编译,剩下的问题同普通WDM驱动的编写。 入口函数123456789101112131415161718NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath) { WDF_DRIVER_CONFIG config; NTSTATUS status; WDF_OBJECT_ATTRIBUTES attributes; //WPP_INIT_TRACING(DriverObject, RegistryPath); //TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_DRIVER, "%!FUNC! Entry"); WDF_OBJECT_ATTRIBUTES_INIT(&attributes); attributes.EvtCleanup ...
Windows驱动开发入门-键盘过滤驱动
发表于2024-05-20|Win驱动开发
Windows驱动开发入门-键盘过滤驱动碎碎念PDO是设备栈最下面的那个物理设备对象。 csrss.exe的进程有个线程叫做win32!RawInputThread,它通过一个GUID叫GUID_CLASS_KEYBOARD获得键盘设备栈PDO符号链接名。应用程序不能通过设备名字打开设备,一般通过符号链接名来打开。win32k!RawInputThread执行到win32k!OpenDevice,一个参数能找到键盘设备栈的PDO符号链接名。win32!OpenDevice有个OBJECT_ATTRIBUTES结构局部变量,它自己初始化这个局部变量,用传入参数中的符号链接名赋值OBJECT_ATTRIBUTES+0x8处的PUNICODE_STRING ObjectName。然后调用ZwCreateFile打开设备得到句柄。 ZwCreateFile通过系统服务,调用内核NtCreateFile,执行到nt!IopParseDevice调用nt!IoGetAttachedDevice,通过PDO获得键盘设备栈最顶端的设备对象,该对象+30 char StackSize作为参数调用IoAl ...
Windows驱动开发入门-串口过滤驱动
发表于2024-05-14|Win驱动开发
Windows驱动开发入门-串口过滤驱动设备绑定IoAttachDevice把一个物理设备与一个设备对象绑定。 12345678NTSTATUS IoAttachDevice( IN PDEIVE_OBJECT SourceDevice, //用来过滤的虚拟设备 IN PUNICODE_STRING TargetDevice, //要绑定的目标设备 例如\Device\Serial0以此类推 OUT PDEVICE_OBJECT *AttachedDevice //返回被绑定的设备指针) IoAttachDeviceToDeviceStackSafe上面那个API没法绑定没名字的设备,这个根据设备对象指针绑定。 12345678NTSTATUS IoAttachDeviceToDeviceStackSafe( IN PDEVICE_OBJECT SourceDevice, //过滤设备 IN PDEVICE_OBJECT TargetDevice, //要被绑定的设备栈中设备 IN OUT PDEVICE_OBJECT ...
手把手教你手撕HIVE文件
发表于2024-05-14|Win内核安全
手把手教你手撕HIVE文件介绍HIVE文件在HKLM\SYSTEM\CurrentControlSet\Control\hivelist下键值给出,这里以C:\Windows\System32\config\SOFTWARE为例。 常用数据结构header总长度为$4096$字节,重要信息: 偏移量 长度(字节) 描述 0x00 4 签名“regf” 0x0C 8 最后一次写入数据时间戳 UTC1601-1-1至今100纳秒间隔数 0x14 4 主版本号 0x18 4 次版本号 0x24 4 RootCell偏移量 0x28 4 HIVE文件长度 不包含表头和结尾附加数据 0x30 HIVE文件名 Unicode字符串 hbin cellsheader后紧接着就是这个。重要信息: 偏移量 长度(字节) 描述 0x00 4 签名“hbin” 0x04 4 相对于第一个hbin偏移量 0x08 4 该hbin数据长度大小 node key(nk)重要信息: 偏移量 长度(字节) 描述 0x00 4 大小 负数已被 ...
Windows驱动开发入门-应用与内核通信
发表于2024-05-14|Win驱动开发
Windows驱动开发入门-应用与内核通信内核部分生成CDOIoCreateDevice内核想要与应用通信时,必须生成控制设备对象CDO。 12345678910111213141516NTSTATUS IoCreateDevice( IN PDRIVER_OBJECT DriverObject, //从DriverEntry参数获得 IN ULONG DeviceExtensionSize, //设备扩展大小 后面讲 IN OPTIONAL PUNICODE_STRING DeviceName, //设备名 可空但别 IN DEVICE_TYPE DeviceType, //设备类型 IN ULONG DeviceCharacteristics, //设备属性 IN BOOLEAN Exclusive, //是否为独占设备 OUT PDEVICE_OBJECT* DeviceObject //返回生成设备对象指针) IoCreateDeviceSecure上面那个有默认安全属性,必须得管理员权限应用 ...
Windows驱动开发入门-时间与线程
发表于2024-05-13|Win驱动开发
Windows驱动开发入门-时间与线程时间KeQueryTickCount返回自系统启动后经历的步进数,不同硬件环境不同。 123VOID KeQueryTickCount( OUT PLARGE_INTEGER TickCount) KeQueryTimeIncrement获取步进100纳秒数。 1ULONG KeQueryTimeIncrement() 例子获得系统启动后经历的毫秒数: 123456789VOID MyGetTickCount(PULONG msec) { LARGE_INTEGER tick_count = { 0 }; ULONG myinc = KeQueryTimeIncrement(); KeQueryTickCount(&tick_count); tick_count.QuadPart *= myinc; tick_count.QuadPart /= 10000; *msec = tick_count.LowPart; return;}; KeQuery ...
Windows驱动开发入门-注册表管理技术
发表于2024-05-12|Win驱动开发
Windows驱动开发入门-注册表管理技术创建注册表键ZwCreateKey创建一个新的注册表项或打开一个现有注册表项。 12345678910111213NTSTATUS ZwCreateKey( _Out_ PHANDLE KeyHandle, _In_ ACCESS_MASK DesiredAccess, //KEY_ALL_ACCESS所有访问权限 KEY_READ通用读权限 KEY_WRITE通用写权限 //KEY_QUERY_VALUE读键值 KEY_SET_VALUE取键值 KEY_CREATE_SUB_KEY生成子键 KEY_ENUMERATE_SUB_KEYS枚举子键 _In_ POBJECT_ATTRIBUTES ObjectAttributes, _Reserved_ ULONG TitleIndex, _In_opt_ PUNICODE_STRING Class, _In_ ULONG CreateOptions, //系统重启时注册表键不保留REG_OPTION_VOLATILE 保留REG_OPTION_ ...
数模竞赛-预测方法
发表于2024-05-10|数学建模
数模竞赛-预测方法灰色预测模型$\operatorname{GM}(1,1)$只适合具有较强指数规律的序列,$\operatorname{GM}(2,1)$、DGM和Verhulst模型适用于非单调摆动发展序列或有饱和S形序列。 $\operatorname{GM}(1,1)$预测方法$\operatorname{GM}(1,1)$预测模型定义: $1$阶微分方程,只含$1$个变量。 已知参考数列$\overrightarrow{x}^{(0)}=\left(x^{(0)}(1),x^{(0)}(2),\cdots,x^{(0)}(n)\right)$,$1$次累加生成序列1-AGO定义为$\overrightarrow{x}^{(1)}=\left(x^{(1)}(1),x^{(1)}(2),\cdots,x^{(1)}(n)\right)$,式中$\displaystyle x^{(1)}(k)=\sum_{i=1}^kx^{(0)}(i),1\leqslant k\leqslant n$,且$\overrightarrow{x}^{(1)} ...
数模竞赛-插值与拟合
发表于2024-05-10|数学建模
数模竞赛-插值与拟合插值方法待定系数法插值略。 拉格朗日插值例题1: 已知未知函数$y=f(x)$的$6$个观测点,求插值函数$y=\hat{f}(x)$,并求$x=1.5,2.6$处函数估计值。 代码: 1234567import numpy,scipyx0=numpy.arange(1,7)y0=numpy.array([16,18,21,17,15,12])p=scipy.interpolate.lagrange(x0,y0)print(numpy.round(p,4)) #高次幂到低次幂系数yh=numpy.polyval(p,[1.5,2.6])print(numpy.round(yh,4)) 牛顿插值略。 分段线性插值龙格震荡现象: 例题2:在区间$[-5,5]$上,用$n+1$个等距节点作多项式$P_n(x)$,使得它在节点处的值与函数$y=\dfrac{1}{1+x^2}$在对应节点处的值相等,考查$n=6,8,10$时,多项式次数与逼近误差的关系。 代码: 1234567891011121314151617impor ...
1…111213…34
avatar
Monoceros406
Windows系统安全爱好者
文章
331
标签
30
分类
0
Follow Me
公告
哪里排版出锅了请告诉我QwQ QQ:1295625063
最新文章
Linux编程入门-系统选项2025-06-21
Linux编程入门-时间2025-06-15
Linux编程入门-用户管理与安全2025-06-15
Linux编程入门-内存管理2025-06-15
Linux编程入门-进程2025-06-14
标签
漏洞复现 恶意代码 密码学 Python 渗透测试 取证 编程语言 逆向工程 AWD Win系统调试 其他 GUI开发 解题报告 沙盒逃逸 算法 Win内核安全 OpenSSL 移动安全 UEFI 数学建模 Win驱动开发 WinAPI IoT PWN 前端开发 Web Linux Web3 后端开发 Misc
归档
  • 六月 20258
  • 五月 20259
  • 十二月 202413
  • 十一月 202412
  • 十月 202420
  • 九月 20243
  • 八月 20248
  • 七月 202413
网站资讯
文章数目 :
331
已运行时间 :
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Monoceros406
框架 Hexo|主题 Butterfly