10 2022 档案

摘要:在编写串口代码时,需要枚举当前系统上的串口,通过api RegEnumValueA(W)可以遍历注册表HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM下的项,枚举串口,代码如下: #include <Windows.h>#pragma comment( 阅读全文
posted @ 2022-10-30 12:29 psj00 阅读(243) 评论(0) 推荐(0)
摘要:使用IoCreateDevice创建的设备,在创建符号关联后,在用户态使用普通用户也可以打开此设备,不安全。 所以需要使用IoCreateDeviceSecure创建设备,有一个参数为PCUNICODE_STRING DefaultSDDLString,这个参数使用不同的值,可以给设备添加不同的安全 阅读全文
posted @ 2022-10-27 18:12 psj00 阅读(116) 评论(0) 推荐(0)
摘要:在编写串口过滤驱动时,用户态调用接口到内核态读取串口消息时,需要等待事件,使用KeWaitForSingleObject KeWaitForSingleObject(&event, Executive, KernelMode, TRUE, 0); 第四个参数为Alertable,表明是否是可接警状态 阅读全文
posted @ 2022-10-27 13:48 psj00 阅读(38) 评论(0) 推荐(0)
摘要:Windows提供了API接口供程序使用,可以使用操作系统提供的功能。 大部分的API具体实现代码都在内核态R0层,用户态R3层的接口仅仅只有一小部分代码,用于调用内核态的代码。 早期的OS一般都通过中断门来实现从R3级切换到R0级,比如Linux下的int 80h、Windows NT和Windo 阅读全文
posted @ 2022-10-26 22:01 psj00 阅读(378) 评论(0) 推荐(0)
摘要:我们一般使用的是管理员账户,如果开启了UAC,那么默认情况下双击一个程序时是以medium权限运行,称为受限的管理员权限,如果右键程序“以管理员权限运行”,那么程序是high权限,称为不受限的管理员权限。 权限由高到低分别为Low Medium High System权限,Low权限很少见,浏览器的 阅读全文
posted @ 2022-10-24 16:34 psj00 阅读(1832) 评论(0) 推荐(0)
摘要:在用户态打开一个驱动设备链接时可以获取到一个句柄,这个句柄是基于当前进程的,句柄的值在当前进程的句柄表中作为索引。 调用CreateFile打开一个已存在的内核设备时,会触发设备所在驱动的IRP_MJ_CREATE请求派遣函数。 句柄对应的对象头在内核中用_OBJECT_HEADER结构体来表示,使 阅读全文
posted @ 2022-10-19 15:55 psj00 阅读(556) 评论(0) 推荐(0)
摘要:为了在windows 64位系统上运行32位用户态程序,Windows操作系统有一个Wow64子系统来转换处理32位程序的调用请求。 当32位程序调用api接口时,32位接口会去调用64位的ntdll,如果存在指针,那么会把指针转化为8字节,从内核返回后,又会将64位指针转化为32位的。 还有 文件 阅读全文
posted @ 2022-10-16 11:42 psj00 阅读(559) 评论(0) 推荐(0)
摘要:需要生成uuid时,可以使用Windows SDK自带的工具uuidgen.exe 如下 如果需要生成一千个,那么使用批处理生成到txt文件中,批处理脚本如下 @echo onfor /l %%i in (1,1,1000) do uuidgen.exe>>1.txtpause 最终生成的文件如下: 阅读全文
posted @ 2022-10-14 18:42 psj00 阅读(192) 评论(0) 推荐(0)
摘要:使用VirtualKD-Redux 配合windbg进行虚拟机双机调试非常方便, 在实体机端选择custom按钮,自定义命令使用如下命令: "D:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe" -c "!sym noisy 阅读全文
posted @ 2022-10-14 16:40 psj00 阅读(875) 评论(0) 推荐(0)
摘要:oracle数据库中 查询时间小于某个属性 select * from T where T."enddt" < to_date('2021-05-11 14:20:24' , 'yyyy-mm-dd hh24:mi:ss') 查询小于现在时间的记录 select * from T where T." 阅读全文
posted @ 2022-10-12 20:04 psj00 阅读(110) 评论(0) 推荐(0)
摘要:在windbg中查看进程、线程、CPU 此处先讨论用户态调试 .process 可以查看当前 当前进程PEB的地址 0:000> .processImplicit process is now 010070000:000> dt _PEB 01007000ntdll!_PEB +0x000 Inhe 阅读全文
posted @ 2022-10-10 15:40 psj00 阅读(4574) 评论(0) 推荐(0)
摘要:进入内核NtCreateFile中,如果需要查看是由用户态进入的还是从内核态进入的,可以使用如下命令 .thread 查看当前线程 kd> .threadImplicit thread is now 87272880 dt _KTHREAD 87272880 -y Previous 在_KTHREA 阅读全文
posted @ 2022-10-10 11:18 psj00 阅读(392) 评论(0) 推荐(0)
摘要:C++三大特性:封装、继承、多态 在这里谈下多态,多态指的是在类之间存在继承关系时,有的函数声明为virtual函数,当我们将子类指针或引用转化为父类指针或引用时,调用某个虚函数时调用的是子类的虚函数。 编译器对于这种虚函数是在对象中存放了一个指针,这个指针指向一个表格,表格称之为虚函数表,在x86 阅读全文
posted @ 2022-10-05 22:09 psj00 阅读(94) 评论(0) 推荐(0)
摘要:在自己开发的驱动中进行进程遍历 在windows每个进程都有一个EPROCESS结构体,除了Idle空闲进程和system进程之外,其余的进程都在磁盘上有自己的可执行文件,而Idle进程和system进程的EPROCESS是由系统伪造的,结构体中对应的ImageFileName也不实际存在于磁盘上。 阅读全文
posted @ 2022-10-04 15:38 psj00 阅读(901) 评论(0) 推荐(0)
摘要:在windbg中 使用命令 !handle 0 5 //参数0代表列出所有句柄,参数5代表显示对象名称和类型。 !handle 0 6 Mutant //只显示互斥类型的对象 阅读全文
posted @ 2022-10-04 14:42 psj00 阅读(128) 评论(0) 推荐(0)