ARK工具开发(持续更新)
ARK工具开发ARK 是 Anti-Rootkit(反Rootkit工具) 的缩写
Rootkit 是一类恶意软件,它被设计用来隐藏自身或其他恶意活动(如病毒、后门等),以避开用户和安全工具的检测。它通常在系统的内核层或用户层中以深层方式运作,可以隐藏文件、进程、网络连接以及注册表项等。
进程遍历Ring3方法Ring3权限级别枚举进程的方法
1.CreateToolhelp32Snapshot: 用于创建一个系统快照,该快照包含了系统中所有活动的进程和线程的列表。参数TH32CS_SNAPPROCESS表示快照类型为进程。然后Process32First / Process32Next: 这两个函数用于遍历由CreateToolhelp32Snapshot创建的进程快照。Process32First用于获取快照中的第一个进程,而Process32Next用于获取下一个进程。
2.ZwQuerySystemInformation: 这是一个系统调用,用于查询系统信息。参数SystemProcessesAndThreadsInformation表示请求获取系统中所有进程和线程 ...
Windows应急响应(持续更新)
Windows应急响应基本命令:获取Ip地址
ipconfig /all: 显示Windows主机的详细IP地址信息,包括IP地址、子网掩码、默认网关等。
ipconfig /release: 释放当前网络接口的IP地址。 释放IP地址是指将之前分配给网络接口的IP地址返回给网络,使得该IP地址可以被其他设备使用。
ipconfig /flushdns: 清除DNS解析器的缓存。
ipconfig /renew: 更新网络接口的IP地址。
/all /flushdns 用得比较多
ipconfig 命令主要用于显示本地计算机的网络配置信息,包括本地IP地址(局域网IP)、子网掩码、默认网关等。这些信息对于诊断本地网络问题非常有用,但它们并不直接显示公网IP地址(即外部IP地址),因为公网IP地址是分配给互联网服务提供商(ISP)的路由器的,而不是直接分配给单个计算机的。 可以用搜索引擎在线查看自己的公网IP
获取端口信息
netstat -an: 显示所有端口的开放情况和网络连接状态,包括TCP和UDP端口。
监听端口是指计算机或服务器上的网络端口,它处于等 ...
Minifilter(nullfilter,scanner,sandbox)
MinifilterMinifilter简介MiniFilter是微软为我们开发的一个新的驱动,称为过滤管理器.(Filter Manager或者 fltmgr).这个驱动主要作用就是如果有文件操作可以通知我们.
Minifilter与legacy filter的区别:
1.比sfilter加载顺序更易控制,因为Minifilter可以设置Altitude
对于Minifilter来说,Altitude 是一个非常重要的概念,因为 Minifilter 结构允许多个过滤驱动共存,而 Altitude 数值用于规定每个驱动的层级位置,高度越低的驱动越靠近文件系统核心,优先处理文件操作。
而Sfilter要自己手动Attach,如果多个过滤设备的话,加载顺序难免会较难控制
2.Minifilter具有可卸载能力而legacy filter卸载可能会蓝屏,原因是可能存在仍在处理的IRP请求
3.CallBack模型,只需要处理必要操作的能力
提供了Pre和Post两个类型的回调
4.兼容性更好
5.名字更好处理:提供了函数一键获取文件路径
6.同样遵循IRQL,锁等内核机制
总体框架
以 ...
QT开发框架(持续更新)
QT框架笔记VS上使用QT环境搭建
C++实践之Qt学习(扩展):Visual Studio中Qt开发环境的搭建_visual studio 与 qt-CSDN博客
配置下32,64位的生成配置
【QT】visual studio QT 32位和64位生成配置_qt生成32位程序-CSDN博客
显示中文,防止乱码:
1#pragma execution_character_set("utf-8")
Qt 在跨平台开发中广泛支持 UTF-8 , 它告诉编译器将源代码中的字符串文字编码为 UTF-8,而不是默认的系统编码(例如GBK)。
关于父类的说明
QMainWindow
可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,可以作为桌面应用的主窗口
QWidget
是所有用户界面对象的基类,其他的窗口和控件都是直接或间接地集成自QWidget,一般创建桌面应用程序时需要创建一个窗口,此时选择QMainWindow或者QDialog即可,QMainWindow是主窗口,QDialog表示对话框。而如果不确定是否作为一个顶级窗口或者嵌入到其他窗口 ...
多线程安全
多线程安全总结就是
DISPATCH_LEVEL:SpinLock
APC/PASSIVE:互斥:ERESOURCE/FAST_MUTEX同步:KEVENT/KSEMAPHORE
R3/R0同步通讯:
KEVENT
常见函数的线程
调用源
运行环境
原因
DriverEntry,DriverUnload
单线程
这两个函数由系统进程的单一线程调用,不会出现多线程同时调用的情况
各种分发函数
多线程
分发函数不会和DriverEntry并发,但是可能和DriverUnload并发
完成函数
多线程
完成例程函数随时被未知的线程调用
各种NDIS回调函数
多线程
和完成函数相同
PsCreateSystemThread PsCreateSystemThread是 Windows 操作系统内核中的一个应用程序编程接口(API)。它主要用于在系统进程(System Process)的环境中创建一个新的线程。
123456789NTSTATUS PsCreateSystemThread( OUT PHANDLE ThreadHandle, ...
内核字符串,文件,注册表操作
字符串 文件 注册表UNICODE_STRING简介在Windows内核中,UNICODE_STRING结构体用于表示一个以UNICODE编码的字符串。它在内核和用户模式下的结构相同,并在内核驱动编程中用于处理字符串操作。
12345typedef struct _UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer;} UNICODE_STRING, *PUNICODE_STRING;
Length:
类型:USHORT
描述:表示字符串的实际长度,以字节为单位,包含字符串内容但不包括终止的空字符(即不一定为0终止)。Length值的上限是MaximumLength。
MaximumLength:
类型:USHORT
描述:表示分配给字符串缓冲区的最大长度(以字节为单位)。MaximumLength通常大于或等于Length,以确保在需要时能扩展字符串。
在分配时通常包含一个额外的2字节空间以便于0结尾的Unicode字符串处理,但这取决于特定的使用场景。
...
IRP的深入理解(持续更新)
IRP的深入理解IRP是什么从概念上讲IRP类似于windows应用程序的消息。我们知道在windows中应用程序是由消息驱动的。
IRP的全名是I/O Request Package,即输入输出请求包,它是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。
IRQL等级在写驱动(软件)我们能接触到的的IRQL等级只有三种
1.无中断:PASSIVE_LEVEL(0):
在此级别,所有中断都可以被处理,没有任何屏蔽。线程可以被调度和抢占,因此用户模式代码大部分时间都运行在这个级别。在此级别下可以执行各种内核 API 和用户模式操作,比如文件 I/O、内存分配、访问分页内存、使用等待和同步对象等。
DriverEntry、 AddDevice、 Reinitialize 和 Unload 例程也PASSIVE_LEVEL运行,驱动程序创建的任何系统线程也是如此。
2.软中断:
APC_LEV ...
Sfilter的实现原理
Sfilter的实现原理简介Windows 文件过滤驱动的原理主要基于操作系统的 I/O 管道,利用过滤驱动程序来监控、修改或控制文件系统的 I/O 操作。所有的 I/O 操作(如打开文件、读写文件、关闭文件等)都通过 IRP 来处理。当用户模式程序发出 I/O 请求时,操作系统生成相应的 IRP 并将其发送到适当的设备驱动程序。
回调函数 : 在 IRP 请求处理中,涉及的函数通常被称为 回调函数。这些回调函数是在驱动程序中定义的,用于处理特定类型的 IRP 请求。回调函数在特定的事件发生时被调用。这也就是为什么三环程序明明没有任何跳转就可以去执行注册的回调函数,就是发送了IRP请求,所以注册的回调函数会被执行
控制设备:DriverEntry中创建,接收自己客户端的IRP
过滤设备:绑定的时候创建,在设备栈上接收其他R3程序的IRP
驱动和设备的关系:
设备对象是驱动对象的具体实例:驱动对象定义驱动程序的属性和行为(例如处理各种IRP的函数),设备对象是驱动控制的具体设备,实际接收和处理IO请求。一个驱动对象可以管理多个设备对象,每个设 ...
查看设备对象IRP请求处理函数
查看驱动对象IRP请求处理函数最近在学Windows的文件过滤,其实也就是过滤驱动的那一套
想象一下一个场景就是,一个安全软件对文件的写入有文件过滤保护,攻击者想要逆向过滤的规则,那么应该如何做呢?
首先我们先要下载一个软件,叫DeviceTree
驱动开发辅助工具WinObj、DebugView、DeviceTree - 科创网
在 WinDbg 中使用以下命令访问 MajorFunction Table
1kd> dt nt!_DRIVER_OBJECT <驱动对象地址>
而这个驱动对象地址,就是在这个DeviceTree软件里面,可以看到右边的信息中有Driver Object,这个就是驱动对象地址
可以看到以下信息
123456789101112131415160: kd> dt nt!_DRIVER_OBJECT 0xfffffa801ae42e70 +0x000 Type : 0n4 +0x002 Size : 0n336 +0x008 DeviceObject : 0xff ...
数据库
数据库关系与表DB DBMS SQL
数据库(DB)、数据库管理系统(DBMS)、SQL,之间的关系
1.1 什么是数据库?
数据库:英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。
顾名思义:存储数据的仓库,数据的集合。实际上就是一堆文件。这些文件中存储了具有特定格式的数据。
1.2 什么是数据库管理系统?
数据库管理系统:DataBaseManagement,简称DBMS。
作用:专门管理数据库中的数据的,数据库管理系统可以对数据库当中的数据进行增删改查。
类型:层次型、网状型、关系u型(本课程主要学习)。
常见的数据库管理系统:MySQL,Oracle、MS SqlServer、DB2、sybase等…..
1.3 SQL - 结构化查询语言
程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL语句,最终来完成数据库中数据的增删改查操作。
本质:是一套标准。程序员只要学习的就是SQL语句包,这个SQL在mysql中可以使用,同时在Oracle也可以使用。
1.4 MB、DBMS、SQL之间的关系?
DBMS–执行 –> ...