自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 收藏
  • 关注

原创 Volatility工具学习

其中较大的差别在于Volatility3抛弃了构建起来较为复杂的 profile,转而使用符号表。而由于Linux 版本很多很杂,并没有提供非常全面的符号表,想要使用的话必须使用。Volatility3在用法上与Volatility差异不大,只是支持的参数列表发生了较大变化,可以使用。当然,如果系统信息确定的情况下,也可以直接使用内置的配置文件。库未找到等等,解决方案都可以在网上找到,这里就不一一赘述了。的配置文件无法分析该系统的内存快照,需要手动构建你自己的。正常情况下,完成以上步骤后,就可以使用。

2025-04-22 16:14:03 369

原创 Windows远程注入的一些问题

在网上搜索Windows平台的远程代码注入时,经常可以看到类似下面的代码,但在实际测试环节中,会发现以上代码执行时会出现目标进程崩溃的问题。从根源上来讲,导致远程线程失败的原因就在于注入的代码中访问了汇编指令中使用的相对或者绝对地址,而对应的地址在远程进程中不可访问。正常情况下,外部函数调用都是通过读取进程导入表来间接完成的,因此远程注入后也会出现不可访问异常。,避免全量重建,减少链接时间,但这也会导致注入远程的实际上变成了跳转指令,而非实际代码。由于字符串实际上存储在数据段,因此也会出现同样的问题。

2025-04-22 16:10:03 457

原创 PE文件导入表解析

上一篇文章中讲到了PE文件中的导出表, 用于定位PE文件中所有的导出函数。而这一篇详细介绍一下数据目录中的导入数据表。

2025-03-31 15:04:03 395

原创 x86-64函数调用传参约定

64位程序参数数量小于。32位程序使用栈传递。

2025-03-31 15:02:47 241

原创 PE文件导出表解析

上一篇文章中讲到了PE文件中的一些基本结构,其中比较重要的数据目录结构没有详细展开, 而这一篇详细介绍一下数据目录中的导出表。

2025-03-28 16:10:30 405

原创 解决VS2022添加资源文件崩溃

Windows 24h2 默认配置策略,导致在实例化JScript的情况下加载 JScript9Legacy.dll,而不是 JScript9.dll。VS2022通过工程添加def文件时,界面卡顿然后重启。以上两种方案均可解决问题,但要注意修改策略或者注册表后重启VS方可生效。

2025-03-28 15:08:58 367

原创 穿透Session 0隔离

在 Windows XP 和 Windows Server 2003 之前,用户和服务会共享同一个会话,而这个会话是由第一个登录到控制台的用户来启动的,该会话就称为Session 0。而从Windows Vista 开始,Windows 采取了会话隔离的措施,确保系统进程和服务与普通用户会话隔离,即只有系统服务和后台进程可以运行在Session 0中。

2025-03-25 19:47:38 401

原创 对称加解密算法学习——AES篇

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。

2025-03-09 22:36:45 1044

原创 Windows 安全日志解析

当Windows运行一个计划任务时,“计划任务服务”将为这个任务首先创建一个新的登录会话以便它能在此计划任务所配置的用户账户下运行,当这种登录出现时,Windows在日志中记为类型4。与计划任务类似,每种服务都被配置在某个特定的用户账户下运行,当一个服务开始时,Windows首先为这个特定的用户创建一个登录会话,这将被记为类型5。当离线设备使用域用户登录时,Windows将使用缓存的交互式域登录的凭证HASH来验证你的身份,这种情况下将登录记为类型11。不详,推测与类型11类似,适用于远程桌面的离线登录。

2024-10-29 16:01:06 1783

原创 Windows驱动开发(三)—— 驱动和应用层通信的几种方式

因此,内核线程和用户进程的通信可以通过进程间通信的方式实现,例如文件映射、共享内存、管道等方式。是 Windows 中的一种轻量级的进程间通信机制,允许在同一台计算机上的不同进程之间进行高效的消息传递。在Windows系统中,驱动程序想要正常工作,往往离不开和用户态进程间的交互。因此,驱动和用户态进程的通信就成为了必不可少的手段。是Windows系统内部使用的一种通信机制,微软没有提供任何的公开文档,因此在实际使用中可能存在一定风险。的请求,用户态进程直接通过设备读写的方式与驱动程序通信。

2024-10-25 16:52:19 1223 1

原创 Windows驱动开发(二)

但是NT式驱动的缺点也正因如此,当需要用NT式驱动实现设备过滤时需要枚举每个需要的设备再附加到设备堆栈,例如早期的。支持即插即用(PNP)和电源管理功能的驱动类型,也是最常见的驱动类型,通常与硬件关联的驱动都是由WDM实现。当然,实际的IO请求实际上是从卷设备开始分发的,而具体如何由卷设备派遣给磁盘设备的逻辑下次再说了。最上层即实际的USB磁盘设备,由usbstor驱动创建PDO,附加到下一层的存储设备。上一层是USB根控制器,由usbuhci驱动创建PDO,同时附加到下层的控制总线上。

2024-10-04 19:48:36 1013 2

原创 Windows消息Hook简介

众所周知,Windows应用程序都是消息(事件)驱动的,任何一个窗口都能够接收消息,并对消息进行处理,处理完成后进入下一轮循环。通常情况下,程序员可以在窗口过程中处理接收到的消息,但是在一些应用中常常需要获取和处理另外应用程序的消息,而实现此类功能的技术也就本文要讨论的主题――消息拦截技术。

2024-03-27 10:17:34 1237

原创 WinDbg无符号调试DriverEntry中断

在内核中,许多函数都需要进行间接调用,出于安全性考虑,避免目标地址被控制,因此不会直接CALL目标地址,而是先通过_guard_dispatch_icall检查地址合法性,并由其进行调用,如果地址合法,它的作用相当于「CALL RAX」。因此,我们在上图红色位置打下断点,等待内核执行到这里,查看RAX的地址。从正常的DriverEntry的调用栈栈中可以看到驱动加载的调用路径基本上如下所示。然后在反汇编窗口中可以发现,这里通过CFG的派遣调用方式执行了RAX指向的函数。上图中可以看到在pe文件后,又通过。

2024-03-07 16:42:46 781

原创 基于布隆过滤器的跨平台USB存储设备管控方案

U盘作为移动存储设备之一,是我们日常生活中接触最多和最常用的存储介质。正因如此,针对U盘内容的管理也因为使用场景的多样和复杂性,变得难以实现。我们的设计思路是先通过某些手段对U盘进行病毒,并在查杀完成后对U盘进行认证。在后续使用过程检测认证U盘是否被篡改以保证U盘的安全性。

2024-02-10 16:13:01 968

原创 加载符号文件

当程序突发崩溃时,当我们尝试通过core文件分析原因时,通常会遇到以下问题,那么这种情况该怎么解决呢?

2024-01-09 11:59:44 473

原创 Windows设备管理

熟悉Windows系统的都应该使用过设备管理器。设备管理器将操作系统中所有已安装的设备分类展现出来。同时提供了安装、卸载、启用和禁用的功能。那么,我们应该如何通过C++编程的方式实现这种功能呢?答案很简单,那就是使用SetupDi函数族。

2023-12-16 22:38:49 1504

原创 Ext4文件系统解析(三)

前文已经讲述了如何根据索引号获取实际的文件内容。对于文件而言,到了这里已经结束了。但是对于文件夹来说,我们还需要从数据块中解析出对应的数据。而在文件系统的实现中,文件夹的实际存储方式有着两种不同的实现,经典的线性布局方式和全新的Hash树布局。

2023-12-02 22:18:32 552

原创 Ext4文件系统解析(二)

想要了解EXT文件系统的工作原理,那了解文件系统在磁盘上的分布就是必不可少的。这一节主要介绍EXT文件系统硬盘存储的物理结构。由于当前主流的CPU架构均采用小端模式,因此下文介绍均已小端模式为准。

2023-12-02 22:17:32 1264

原创 Ext4文件系统解析(一)

熟悉Linux操作系统的都应该或多或少的了解或者使用过Ext4文件系统。接下来,会简单介绍Ext4文件系统的一些特性和工作原理。

2023-12-02 22:14:14 1808

原创 NTFS文件系统解析(四)

前文在非常驻属性中提及了Data Run,那么Data Run到底是什么呢?简单来说,Data Run是一个指向实际数据存储的一个固定格式的数组。通常情况下,Data Run由一组或者多组数字组成。

2023-11-05 19:03:27 822

原创 NTFS文件系统解析(三)

正如上图所示,绿色部分代表IndexEntry的头部,紧接着的红色部分和黄色部分就是去除了标准属性头之后的0x30属性,而最后的紫色部分则存储着子节点的VCN号。为了便于管理,NTFS文件系统为所有的属性定义了统一的头部结构,可以称之为属性头。对于NTFS文件系统而言,无论文件内容本身,抑或真实的文件属性,都被称之为属性。索引根节点通常由标准属性头,索引根属性头,索引属性头和索引属性组成。而由于每种属性的长度不一,因此又额外定义了常驻属性和非常驻属性。属性,这种情况下,文件的基本属性与。

2023-11-05 19:01:11 664

原创 NTFS文件系统解析(二)

但是,当一个记录的恰巧写到扇区最后2个字节时,由于扇区尾部已经写入了2个字节的更新序列号。NTFS文件系统的的工作流程主要依赖于两个部分,文件记录部分用于记录文件本身的信息,而索引部分则通过树的形式存储着文件系统的结构信息。NTFS文件系统为了保持数据的一致性,在文件和索引记录的每个扇区的最后2个字节都会写入更新序列号。| 索引记录头 | 索引头 | 索引数据 | …| 结束标志 || 文件记录头 | 属性列表 | 属性列表 |…| 结束标志 |

2023-11-05 18:52:31 322

原创 NTFS文件系统解析(一)

文件记录是一个与文件相对应的文件属性数据库,它记录了文件数据的所有属性。但是,由于Windows操作系统的封闭性,我们无法准确得知NTFS文件系统的具体实现,因此,只能通过少量的官方文档和逆向分析的方式来推导NTFS文件系统的工作流程。一个属性的偏移00H~03H处的4个字节,为该属性的类型标志,不同的属性其结构和含义各不相同。通常情况下,当需要从卷中读取文件时,只需要从根目录从查询出文件对应的逻辑簇号(LCN),再根据LCN从MFT记录读取出文件的记录即可。每个文件或者目录都对应一个或者多个文件记录。

2023-11-05 18:50:46 505

原创 默认文件系统类型的扫描方案

当然,实际上对Windows操作系统的底层调用有所了解的情况下,可以知道上述提到的函数在内核中实际上是通过调用。在linux平台上,说到目录遍历,最先想到的必然就是opendir/readdir/closedir函数。通常情况下,当需要遍历整个磁盘时,我们会选择使用系统提供的接口,或者调用标准库或者boost库中的。库的遍历方法较为简单,因此本文仅列举系统遍历接口的使用方法。函数和广度优先算法遍历目录。因此可以选择直接调用。

2023-10-24 21:50:57 133

原创 基于卷的磁盘扫描算法设计

通常会使用诸如FindFirstFile/FindNextFile(Windows),或者opendir/readdir(Linux)遍历扫描的目录。因此,我们基于磁盘逻辑卷的结构,设计基于卷的遍历算法,能有效减少磁盘IO次数,提升扫描性能。但是,当伴随文件数量变多,文件夹层次加深时,遍历算法的性能往往不尽如人意。一般情形下,由于文件数量相对较少,文件夹层次低,扫描效率相对符合预期。常规情况下,当我们扫描计算机的硬盘时,

2023-10-24 21:24:57 150

原创 Ubuntu20.04 搭建L2TP+IPsec客户端

编辑PPP配置文件(例如上文中的**/etc/ppp/options.l2tpd.client**)。2)编辑**/etc/ipsec.secrets** , 设置ipsec的预共享秘钥,编辑**/etc/xl2tpd/xl2tpd.conf**1)编辑**/etc/ipsec.conf**安装l2tp和strongswan。

2023-10-23 12:11:34 3216

原创 Ubuntu20.04 搭建L2TP+IPsec环境

1) 编辑PPP配置文件(例如上文中的**/etc/ppp/options.xl2tpd**)。2)编辑**/etc/ipsec.secrets** , 设置ipsec的预共享秘钥。2)编辑**/etc/ppp/chap-secrets**,添加VPN访问用户密码。当客户端可以连接到VPN服务器时,需要添加路由才可以访问私有网络中的其它机器。编辑**/etc/xl2tpd/xl2tpd.conf**1)编辑**/etc/ipsec.conf**安装l2tp和strongswan。

2023-10-23 12:09:24 7516 3

原创 Linux终端控制与ANSI转义序列

在Windows系统中,我们可以通过系统提供的接口操作控制台缓冲区的显示。那么在linux平台应该如何实现呢?答案就是ANSI转义序列。在计算机系统中,ANSI转义码(或转义序列)是一种使用带内信号控制视频文本终端的格式、颜色和其他输出选项的方法。为了编码这种格式化信息,特定的字节序列被嵌入到文本中,终端将查找并将其解释为命令,而不是字符代码。

2023-10-06 17:28:46 591

原创 如何完美控制控制台输出

正常情况下,我们在控制台程序中只关注程序的输入和输出,而不在意输出的格式、光标位置等。因此,当我们想要完美控制程序的输入输出时,就必须要使用系统提供的操作接口,来实现我们的目标。由于linux平台的控制台显示完全由ANSI 转义序列控制,在这里仅仅讨论windows平台的实现。

2023-10-02 18:14:09 369

原创 Windows驱动开发(一)

总结来说,WDM是早期的Windows驱动开发模型,需要开发人员直接操作底层硬件资源,而WDF是在WDM之上的高级和抽象的驱动程序开发框架,提供了更简化和自动化的开发方式。注意:在极少数情况下,你需要编写注意到 PnP 或电源事件的软件驱动程序,并且驱动程序需要访问无法通过 KMDF 获取的数据,你必须使用 WDM。WDF提供了更多的自动化和简化功能,减少了驱动程序开发的复杂性和错误,提高了开发效率和稳定性。WDM驱动程序以核心驱动程序、功能驱动程序和过滤器驱动程序为基础,涵盖了广泛的硬件设备类型。

2023-09-12 15:41:11 3180

原创 CMake基础

是 CMake 中的一个变量,用于指定构建类型。通过设置,您可以控制在构建过程中使用的编译选项和优化级别。通常,变量的值可以是以下之一:Debug:用于调试目的,启用调试符号,并优化性能。Release:用于发布目的,启用更高级别的优化和禁用调试符号。RelWithDebInfo:一种组合模式,同时启用优化和调试符号。MinSizeRel:用于最小化生成文件大小的模式。是 CMake 中表示目标系统的名称。是 CMake 中表示当前系统指针的字节大小。

2023-09-07 14:12:39 326

原创 C++ 获取进程信息

通常对于一个正在执行的进程而言,我们会关注进程的内存/CPU占用,网络连接,启动参数,映像路径,线程,堆栈等信息。windows平台没有直接提供获取进程启动参数的接口,但是可以通过解析进程的PEB(进程环境块)地址,获取信息。:这个文件包含了有关进程状态的各种信息,如进程ID、父进程ID、运行状态、内存使用情况等。:这个文件包含了进程的内存映射信息,显示了进程所使用的内存地址范围及其对应的权限。:这是一个文件夹,包含了进程当前打开的文件描述符列表。:这是每个正在运行的进程都有一个对应的目录,其中。

2023-08-28 18:20:59 2458

原创 Zmq适配Win7 SP0 / Win XP/ Win 2k

由于发布版本的libzmq使用了较多新的系统特性,导致在低版本windows平台上无法使用。因此,需要对zmq源码进行修改以适配低版本的系统,如Win7 SP0,Win XP,Win2003等等。

2023-08-15 15:40:07 497

原创 PE文件解析

PE(Portable Executable)文件是Windows操作系统中广泛使用的可执行文件格式。通常所说的PE文件是指32位可执行文件,也称为PE32。而64位的可执行文件称为PE+或PE32+,是PE(PE32)的一种扩展形式。

2023-08-10 20:02:48 863

原创 设计模式——代理

代理模式是一种结构型设计模式,它通过引入一个代理对象来控制对原始对象的访问。代理模式在客户端和目标对象之间添加了一个代理,代理对象与目标对象实现相同的接口,客户端通过代理对象来间接地访问目标对象。抽象主题(Subject):定义了真实主题和代理对象共同的接口,这样代理对象可以在任何需要真实主题的地方代替它。真实主题(Real Subject):定义了代理对象所代表的真实对象。

2023-07-04 22:06:10 307

原创 设计模式——适配器

用于将一个类的接口转换成另一个客户端所期望的接口形式。适配器模式使得原本由于接口不兼容而无法一起工作的类可以协同工作。

2023-07-01 21:25:35 518

原创 设计模式——装饰器

指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式。那么使用装饰器模式如何实现上面的需求呢?

2023-06-25 14:00:24 544

原创 设计模式——入门

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。

2023-06-19 18:47:18 471

原创 Sha1算法实现流程(基于OpenSSL源码)

SHA-1(Secure Hash Algorithm 1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

2023-04-28 22:18:47 3003

原创 Selenium入门教程

Selenium最初是由ThoughtWorks公司一个叫Jason R. Huggins的工程师和他的团队开发出来Selenium是仅针对Web系统的一款自动化测试工具Selenium是免费的、开源的,很多公司选择Selenium和它是免费的有很大关系 Selenium不是一个工具,它是一系列工具的总称

2022-11-17 11:15:12 1445

适用于 Windows 2000 的 IPv6 技术预览

适用于 Windows 2000 的 IPv6 技术预览

2023-08-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除