搜素隐藏驱动的一个BSOD问题

彻底清理隐藏驱动:Driver Store Explorer实战教程 利用driver store explorer可以高效管理并清除系统中残留的旧版驱动文件,避免蓝屏或冲突问题。通过实际操作演示,掌握精准筛选与安全删除技巧,提升系统稳定性。 阅读详情
 

以前没做过,所以尝试一下,摸索中BSOD了N久, 今天终于有时间调试驱动,于是花了2个小时解决掉了.

细节问题总结下,以警示自己:
   1. 犯下了一个低级错误,导致在内存访问上出问题,在那个Lib封装函数中,把计数i调整成局部变量即可.
   2. 发IOCTL中,拷贝数据时分配的内存不够导致出现乱码
   3. 驱动中代码流程要明晰,容错处理要强大,以便即时发现出错代码,跟进调试

VOID
Thread_SearchHiddenSys (
     IN PVOID StartContext
     )
{
    ULONG i;
   
    // 初始化信息,分配内存
     g_Event_SearchHiddenSys = ExAllocatePool( NonPagedPool, sizeof(KEVENT) );
     g_Event_SearchHiddenSys_completed = ExAllocatePool( NonPagedPool, sizeof(KEVENT) );
     psudami = (PMODULE_INFOR)ExAllocatePoolWithTag( NonPagedPool, 300*sizeof(MODULE_INFOR),'suda' );

     KeInitializeEvent(g_Event_SearchHiddenSys, NotificationEvent, FALSE);
     KeInitializeEvent(g_Event_SearchHiddenSys_completed, NotificationEvent, FALSE);
    memset( (PVOID)psudami, 0, 150*sizeof(MODULE_INFOR) );


    // 若申请内存失败,则退出系统进程
    if ( !g_Event_SearchHiddenSys || !g_Event_SearchHiddenSys_completed /*|| !psudami*/ ) {

         ExFreePool( g_Event_SearchHiddenSys );     
         ExFreePool( g_Event_SearchHiddenSys_completed );

        if ( psudami ) {
             ExFreePool(psudami) ;
         }

         DbgPrint("SearchHidenSys - ExAllocatePool(g_Event_SearchHiddenSys) failed/n");
         PsTerminateSystemThread( STATUS_SUCCESS );
     }


    while (TRUE) {

        // 系统线程结束时要清理申请的内存
        if ( FALSE == g_bRepeat_SearchHiddenSys ) {
             DbgPrint("SearchHidenSys - Terminate Our Thread");

             ExFreePool( g_Event_SearchHiddenSys );
             ExFreePool( g_Event_SearchHiddenSys_completed );

            if ( psudami ) {
                 ExFreePool(psudami) ;
             }

             PsTerminateSystemThread( STATUS_SUCCESS );
         }

        // 循环一次,便重新设置EVENT为"未受信"状态.让线程等待激活
         KeClearEvent( g_Event_SearchHiddenSys );
         KeClearEvent( g_Event_SearchHiddenSys_completed );

    //     DbgPrint("SearchHidenSys - I'm Waiting.../n");
        // 等待事件,一直到"受信"状态
         KeWaitForSingleObject( g_Event_SearchHiddenSys, Executive,
             KernelMode, FALSE, NULL );

        if ( NULL == psudami ) {
             DbgPrint("SearchHidenSys - ExAllocatePoolWithTag Failed/n");
         } else {
            memset( (PVOID)psudami, 0, 300*sizeof(MODULE_INFOR) );
             SearchHidenSys( psudami, 0 ) ;

        //     DbgPrint("SearchHidenSys - Already done/n");
             KeSetEvent( g_Event_SearchHiddenSys_completed, 0, FALSE ); // 设置为“受信”状态,唤醒等待者
         }
     }
}

现在越来越喜欢把常用函数封装到Lib里面,再供其他模块频繁调用了,于是把这个小模块的功能封装成了LIB,我的头文件格式是这样写的,贴一下, 方便诸位参考,具体代码可参见Debugman上MJ发的搜索隐藏驱动的Demo,无壳无花,拖到IDA中就是code了,然后自己整合下,就可用于自己的程序啦:

#ifndef _MSKQ_H
#define _MSKQ_H 1

#include <ntddk.h>

#ifdef __cplusplus
extern "C" {
#endif


/////////////////////////////////////////////////////////////////////

typedef struct _MODULE_INFOR {
  CHAR   ImageName[255] ;  // 模块全路径
  PVOID   Base ;            // 模块基址
  ULONG   Size ;            // 模块大小
  BOOL   bIsHiden ;        // 是否是隐藏模块
} MODULE_INFOR, *PMODULE_INFOR;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
VOID SearchHidenSys(
   PMODULE_INFOR pModuleInfor,
  BOOL bPrintAll
   );
/*++

Author: sudami [sudami@163.com]
Time   : 2008/09/16 [16:9:2008 - 21:26]

Routine Description:
     lib调用接口,负责搜索内核空间,寻找尽可能多的PE特征,让你抹掉了也可以找到隐藏的驱动. 其他模块调用此函数时:

     // 调用语句
     PMODULE_INFOR psudami ;

     psudami = (PMODULE_INFOR)ExAllocatePoolWithTag(0,200*sizeof(MODULE_INFOR),'suda');
     if ( NULL == psudami ) {
       DbgPrint("SearchHidenSys - ExAllocatePoolWithTag Failed/n");
     } else {
       SearchHidenSys( psudami, TRUE ) ;
     }

       // 驱动卸载时必须释放申请的内存:
     if ( psudami ) {
       ExFreePool(psudami) ;
     }
  
   这个Lib主要把信息收集起来,其他模块调用完后,可传到R3,显示出来
    
Arguments:

     pModuleInfor - [IN][OUT] 传进来的结构体指针,负责存储模块信息(ImageName, Base, Size)

   bPrintAll - [IN] 是否打印出查找到的信息

Return Value:

--*/


/////////////////////////////////////////////////////////////////////


#ifdef __cplusplus
}
#endif

#endif

///////////////////////////////    END OF FILE    ///////////////////////////////

另外,明天是自己入职某公司进行实习的第一天,该好好表现了...

----------------------------------------------

PS: 相关链接请参考这里:

BSOD_0X9F Microsoft ® Windows Debugger Version 10.0.17134.1 AMD64 Copyright © Microsoft Corporation. All rights reserved. Loading Dump File [D:\Temp\BSOD\3Nod\MEMORY0926.DMP] Kernel Bitmap Dump File: Full addre... 阅读详情

相关推荐

手把手教你用MiProcessLoaderEntry隐藏Windows驱动(附完整代码)

本文详细解析了Windows内核驱动隐藏技术,重点介绍了MiProcessLoaderEntry的实现方法及其在绕过PatchGuard机制中的应用。通过完整代码示例和安全性考量,帮助开发者掌握高效且稳定的驱动隐藏技巧,适用于安全监控、反作弊等合法场景。

linux的博客 684

虫趣:FAST_MUTEX死锁

问题到此可告一段落了: 线程1在处理IRP_MJ_POWER的时候,试图获取一个FAST_MUTEX同步对象,但因获取失败而进入休眠状态(并因休眠过久,而导致BSOD)。 在成功获取FAST_MUTEX对象的地址后,从它的结构体中得到了当前拥有此同步对象的线程2地址。 切换到线程2,发现线程2有一个无法处理的页错误,也同样处于等待状态中。

张佩的技术库 5661

深入解析内核驱动隐藏技术:绕过PatchGuard的实战策略

本文深入解析了Windows内核驱动隐藏技术,重点探讨了如何绕过PatchGuard保护机制。通过利用驱动重初始化回调函数和未公开的MiProcessLoaderEntry函数,实现在合法上下文中清理驱动加载记录,达到稳定隐藏驱动的目的,避免触发系统蓝屏。

lilh34434的博客 475

BSOD及代码详解

BSoD,Blue Screen of Death,即蓝屏死机。 微软操作系统的经典死机提示屏幕。通常是由于工作在Ring0级的内核程序出错导致的,比如内核程序访问了不可访问的内存会立即导致BSoD。 Windows蓝屏错误代码详解编辑 蓝屏错误代码祥解我们在使用Windows的时候,出现蓝屏是经常的事。大多数时候,我们只能reset,现在公布蓝屏错误代码含义,以备使用。 数 值 叙

zhongyhc的专栏 1963

VMware虚拟机导致主机蓝屏死机(BSOD)的完整排查与解决指南

很多朋友在 VMware 上启动虚拟机时,都遇到过主机突然蓝屏死机(BSOD)的崩溃瞬间。那种感觉就像系统在说:“我说了,我什么都没做!”,然后留下一脸茫然的你。这通常不是虚拟机内部的问题,而是主机系统与虚拟化软件之间的兼容性或配置冲突导致的。 本文将系统性地拆解 VMware 虚拟机导致主机蓝屏的各类原因,并提供一套从快速排查到深度解决的完整实战指南。无论你是刚入门的新手,还是有一定经验的开发者,都能从中找到清晰的排查思路和可操作的解决方案,彻底告别因虚拟机而引发的系统不稳定。 1. 理解蓝屏死机(BSO

weixin_34354173的博客 331

Windows蓝屏死机(BSOD)终止代码详解与系统故障诊断全攻略

在计算机系统运行过程中,内核级错误是导致系统不稳定甚至崩溃的核心原因之一。当Windows操作系统检测到无法恢复的严重错误时,会触发蓝屏死机(BSOD)机制,这是一种保护性措施,旨在防止数据损坏和硬件损伤。理解其背后的工作原理,关键在于解读系统生成的终止代码(Stop Code),这些代码本质上是内核发出的详细诊断报告。从技术价值看,掌握蓝屏诊断能力能极大提升系统维护效率,将被动故障转化为可分析、可解决的技术问题。在实际应用场景中,无论是驱动程序冲突、系统文件损坏还是硬件故障,都能通过终止代码进行初步定位。

weixin_34161032的博客 429

bsod错误代码。_如何解决BSOD(蓝屏死机)和Windows Stop错误?

bsod错误代码。 If you get a (Blue Screen of Death), your system writes a small file called a minidump. 如果出现(蓝屏死机),则系统将写入一个称为minidump的小文件。 Your first step is to ma...

cunchi8090的博客 3133

Windows 上遇到蓝屏错误(BSOD)?解决 Windows 蓝屏错误的方法

当出现蓝屏错误时,Windows 会显示一个包含错误代码和错误描述的蓝色屏幕,以及有时会收集有关错误的详细信息。下面将介绍几种常见的蓝屏错误类型以及修复它们的方法。当出现蓝屏错误时,Windows 会显示一个包含错误代码和错误描述的蓝色屏幕,以及有时会收集有关错误的详细信息。这个错误通常表示 Windows 无法访问启动设备,可能是由于硬盘驱动程序错误、硬盘故障或引导管理器配置错误引起的。这个错误通常表示 Windows 无法访问启动设备,可能是由于硬盘驱动程序错误、硬盘故障或引导管理器配置错误引起的。

2301_79326254的博客 3098

关于驱动隐藏那点事(不触发PG 支持win10)

已开源:https://github.com/ZhuHuiBeiShaDiao/NewHideDriverEx 更新:支持seh,原理自己逆下 将seh挂到其它模块上而已. 看网上用此方法隐藏用的挺嗨啊,麻烦打个出处,谢谢了. 没必要藏着,人生没有必要为这些小玩意小打小闹。 看到某些哥们这搞搞那搞搞,BSOD PATCHGUARD 无语,WRK是个好东西啊! 还有半年来也没怎么发博客,惭...

zhuhuibeishadiao 2万+

17、Windows 10 常见问题处理及远程支持指南

本文详细介绍了Windows 10系统中常见的蓝屏死机(BSOD)问题及其处理方法,包括错误信息查找、内存转储文件分析和使用BlueScreenView等工具。同时探讨了远程支持的挑战,并提供了多种实用解决方案,如问题步骤记录器、Game DVR应用程序录制、快速协助和Windows远程协助等功能的使用指南,帮助用户高效诊断问题并实现远程技术支持。

http9protocoller的博客 39

Scratch离线版部署指南:解决资源缺失与页面显示异常问题

本文提供了一份详尽的Scratch离线版部署指南,旨在解决网络依赖导致的资源缺失与页面显示异常问题。通过从基础文件获取、自动化资源抓取到生产环境部署的完整流程,帮助教育工作者和开发者在无网络环境下搭建功能完整的本地Scratch编辑器,确保编程教学的顺利进行。

wine的专栏 1263

隐藏驱动模块

#include typedef unsigned long DWORD; typedef struct _KLDR_DATA_TABLE_ENTRY { LIST_ENTRY InLoadOrderLinks; PVOID ExceptionTable; ULONG ExceptionTableSize; PVOID GpValue; DWORD U

125096 2163

如何选择StandardScaler、MinMaxScaler和RobustScaler做标准化的对比解释和示例代码

选择合适的标准化方法取决于数据的特点和需求。如果数据分布接近正态分布且无异常值,可以使用。如果需要将数据映射到特定范围内并保持相对关系,可以使用。如果数据中存在异常值或离群点,可以使用进行鲁棒标准化。在分类、聚类算法中,需要使用距离来度量相似性的时候、或者使用PCA技术进行降维的时候,StandardScaler表现更好(避免不同量纲对方差、协方差计算的影响);在不涉及距离度量、协方差、数据不符合正态分布、异常值较少的时候,可使用MinMaxScaler。

qq_36001281的博客 4940

VMware虚拟机蓝屏死机(BSOD)问题深度诊断与解决实战指南

这次我们来看一个在VMware虚拟机环境中遇到的经典蓝屏死机问题。标题“好好萌可说:‘我说了,我什么都没做!’有蓝屏死机(VMware虚拟机版本)”非常形象地描绘了一个场景:用户可能只是正常操作,虚拟机却突然蓝屏,让人感到无辜又困惑。这背后往往不是用户“做错了什么”,而是虚拟机环境、驱动、配置或系统本身存在兼容性问题。 对于需要在本地搭建测试环境、运行特定软件或学习不同操作系统的开发者、运维和爱好者来说,VMware Workstation是核心工具。然而,蓝屏死机(BSOD)是阻碍工作流、导致数据丢失和挫

weixin_33717117的博客 335

Bulk / Smart-seq2数据分析一般流程

Bulk RNA-seq(RNA-Seq of bulk samples)是一种RNA-Seq技术应用,它是通过将整个组织或细胞群体的RNA提取并混合,进行高通量测序来分析基因表达的技术。转录本定量结果可以用于后续的差异表达分析和聚类分析。功能注释和富集分析:对差异表达基因进行功能注释和富集分析,以帮助理解差异表达基因的功能和调控网络,从而获得对研究样品的更深入的理解。数据可视化:最后,将聚类分析的结果进行可视化,可以使用常见的数据可视化工具,如ggplot2、Plotly等,来帮助用户更好地理解数据。

weixin_54519672的博客 5350

Python 爬虫实战:手机应用商店评论数据爬取与分析

移动应用市场蓬勃发展,用户的评论数据包含了大量有价值的信息,如用户满意度、功能反馈、改进建议等。通过分析这些评论,我们可以挖掘应用的优缺点,甚至预测用户趋势。由于 Apple App Store 评论是动态加载的,我们使用。本篇博客将详细介绍如何使用 Python 爬取。爬取大量数据时,可能会遇到反爬机制。库获取 Google Play 评论。评论数据是动态加载的,需要使用。

2201_76125261的博客 2323

深入解析内核驱动隐藏技术:绕过PatchGuard的实战探索

本文深入探讨了Windows内核驱动隐藏技术,重点解析了如何巧妙绕过PatchGuard内核补丁保护机制。通过利用系统合法的驱动重新初始化(Driver Reinitialization)机制,而非直接篡改关键链表,实现驱动的稳定“隐身”。文章提供了实战代码与原理分析,适用于安全研究、系统监控等合法开发场景。

ipfs8storage的博客 242

第4篇:使用 NModbus 库快速搭建 Modbus TCP 通信(从零开始用 C# 开发 Modbus 上位机)

本文介绍了如何使用 NModbus 库快速搭建 Modbus TCP 上位机通信程序。通过安装 NModbus4 NuGet 包,开发者可以轻松实现 Modbus TCP 连接,无需手动处理底层协议细节。文章详细演示了核心功能实现: 创建 TCP 客户端连接设备 读取保持寄存器(功能码0x03) 写入单个寄存器(功能码0x06) 关闭连接释放资源 提供完整C#示例代码,包含初始化连接、数据读写等关键操作,帮助开发者快速构建Modbus TCP通信应用。相比手动实现,NModbus库大幅简化了开发流程,特别适

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1045

VMware虚拟机蓝屏死机(BSOD)排查与修复全攻略

“我说了,我什么都没做!” 这句话,是不是像极了你在面对一个突然蓝屏的虚拟机时,内心最真实的呐喊?你只是正常地开机、运行一个程序,或者仅仅是挂起后恢复,屏幕上就毫无征兆地出现了那片令人窒息的蓝色,伴随着一串冰冷的错误代码。在VMware Workstation里,这种“蓝屏死机”(BSOD)带来的挫败感尤其强烈——它明明是一个受控的虚拟环境,怎么比物理机还“脆弱”? 问题的核心往往不在于你“做了什么”,而在于虚拟化层、客户机操作系统和物理硬件三者之间,某个不被察觉的“约定”被打破了。虚拟机蓝屏并非无解之谜,

weixin_33906657的博客 446

Python 爬虫实战:社交媒体(Facebook)评论数据抓取与情感分析

在当今数字化时代,社交媒体平台如 Facebook 已成为人们日常生活中不可或缺的一部分。它不仅是人们分享生活点滴、交流思想的场所,也为企业和研究人员提供了丰富的数据资源。通过分析社交媒体上的评论数据,我们可以了解用户的情感倾向、产品反馈以及社会热点话题等。本文将详细介绍如何使用 Python 爬虫技术抓取 Facebook 上的评论数据,并进行情感分析。这不仅是一次技术实战,更是一次数据探索之旅。

yansideyucsdn的博客 672

手把手教你学Simulink--基于新型通信技术集成的场景实例:无人机利用激光通信实现高速率数据传输

摘要: 本文基于Simulink搭建无人机激光通信仿真系统,解决传统射频通信带宽不足问题。系统通过五层架构(发射机、信道、PAT系统、接收机、性能分析)实现Gbps级高速传输,重点建模大气衰减(雾/雨)、光束发散、PAT精跟踪(Stateflow+PID控制)等核心模块。仿真结果显示:晴天链路可达2.5Gbps(BER 1e-8),浓雾下链路中断,验证了雾是主要性能限制因素。案例涵盖调制方式选择、动态环境仿真及3D可视化,为无人机高速数据传输提供可扩展的仿真框架,并指出混合FSO/RF、AI-PAT等优化方

MHD0815的博客 181

给网游写一个挂吧(一) – 反反外挂驱动的驱动

去年做了一些研究,研究做外挂的一些相关技术,打算放出来跟大家分享,分享一下我们做挂的一些思路,挂的原理,希望抛砖引玉。   外挂说白了就是用程序代替人去操纵游戏,模拟人向游戏程序发送键盘、鼠标消息。一般的流程就是: 1、 通过Windows系统的OpenProcess API打开目标进程 – 也就是游戏,以便能读写目标内存的数据,甚至是调用目标进程的函数,比如某些世界级的游戏里的Lua函数,...

weixin_34358092的博客 961

MicroCap声学仿真介绍(二)-创建声学仿真元件

声学库里包含孔、管、障板辐射器等器件,我们只需要按照仿真的需求,将声学库里的器件排列好,输入参数,用线连接起来即可。这里我们用D指代孔的直径,L指代孔的长度,N代表孔的数量。26.在弹出的界面中做如下设置:需要先在右面的选框里找到对应的项,然后右键Add Part,再之后就如下设置。3.在弹出的界面中,选择“Macro file(.mac)”,并点击右上角的“OK”下面就以声学仿真中常见的“孔”来做示例,跟大家一块演示一下宏程序的新建。10.在上图中“Value”中填入“R”,然后点击左边的“OK”按钮;

山无忧的博客 2199

桌面运维常见问题与解决方法(系统篇二)

下面内容基于企业桌面运维日常处理逻辑,不讲理论,只讲实际怎么处理。三,蓝屏(BSOD)蓝屏本质:Windows 内核检测到,主动停止系统防止数据损坏。如果电脑开机就显示蓝屏呢?怎么解决?开机就蓝屏(BSOD)是桌面运维最常遇到的“硬骨头”。因为这时候你进不去系统,没法用常规软件查。处理这个问题,我们要遵循“先软后硬”的原则。

爱好学习的小小白 875

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 驱动隐藏
下一篇: AddSection
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值