心血来潮测试隐藏驱动还不触发PG,看看有探讨的同学不


  1. 断链 //你可能会随时会看到一个蓝色的屏幕!
  2. 直接MiProcessLoaderEntry //跟断链没有太大区别,但是在测试中,不会见到蓝色的屏幕,同时SEH异常处理也失效!
  3. 现在操作的就是使用MiProcessLoaderEntry来处理!

关键步骤如下:

1.驱动入口调用IoRegisterDriverReinitialization函数原型如下

void IoRegisterDriverReinitialization(_in_           PDRIVER_OBJECT       DriverObject,_in_           PDRIVER_REINITIALIZE DriverReinitializationRoutine,_in_, optional_ PVOID                Context
);

2.处理操作如下:

typedef NTSTATUS(__fastcall* _MiProcessLoaderEntry)(PVOID pDriverSection, BOOLEAN bool_);
typedef struct _LDR_DATA_TABLE_ENTRY {LIST_ENTRY InLoadOrderLinks;LIST_ENTRY InMemoryOrderLinks;LIST_ENTRY InInitializationOrderLinks;PVOID DllBase;PVOID EntryPoint;ULONG SizeofImage;UNICODE_STRING FullDllName;UNICODE_STRING BaseDllName;ULONG Flags;USHORT LoadCount;USHORT TlsIndex;PVOID SectionPointer;ULONG CheckSum;PVOID LoadedImports;LIST_ENTRY64 ForwardweLinks;LIST_ENTRY64 ServiceTaLinks;LIST_ENTRY64 sTATIClINKS;PVOID ContextInformation;LARGE_INTEGER LoadTime;
}LDR_DATA_TABLE_ENTRY, * P_LDR_DATA_TABLE_ENTRY;VOID DriverReinitializationRoutine(PDRIVER_OBJECT pDriverObject, PVOID Context, ULONG Count){_MiProcessLoaderEntry MiProcessLoaderEntry = NULL;MiProcessLoaderEntry(pDriverObject->DriverSection, FALSE);P_LDR_DATA_TABLE_ENTRY LdrEntry = (P_LDR_DATA_TABLE_ENTRY)pDriverObject->DriverSection;InitializeListHead(&LdrEntry->InLoadOrderLinks);InitializeListHead(&LdrEntry->InMemoryOrderLinks);p->DriverUnload = NULL;p->DriverInit = NULL;p->DriverSize = NULL;p->DriverStart = NULL;p->DeviceObject = NULL;p->DriverSection = NULL;
}

经过上方一系列操作后,任何工具都无法看到驱动的加载,当然也是正常运行的!
正常通讯!

内核驱动隐藏【绕过PatchGuard】相关推荐

  1. 内核驱动隐藏自身【断链】

    内核驱动加载断链式隐藏自身 //创建一个驱动对象数据结构 typedef struct _KLDR_DATA_TABLE_ENTRY {LIST_ENTRY64 InLoadOrderLinks;// ...

  2. 驱动开发:内核无痕隐藏自身分析

    在笔者前面有一篇文章<驱动开发:断链隐藏驱动程序自身>通过摘除驱动的链表实现了断链隐藏自身的目的,但此方法恢复时会触发PG会蓝屏,偶然间在网上找到了一个作者介绍的一种方法,觉得有必要详细分 ...

  3. 【梅哥的Ring0湿润插入教程】第一课Windows内核/驱动编程概述及应用、商业驱动保护软件原理分析...

    [梅哥的Ring0湿润插入教程] Email:mlkui@163.com 转载请注明出处,谢绝喷子记者等,如引起各类不适请自觉滚J8蛋! 第一课Windows内核/驱动编程概述及应用. 商业驱动保护软 ...

  4. 树莓内核驱动io框架

    树莓派内核驱动框架 驱动层框架编写 驱动程序:pin4driver2.c 上层程序pin4test.c 驱动代码编译和测试 1.返回内核源码linux文件进行模块编译 2.将生成的pin4driver ...

  5. 谈谈Linux内核驱动的coding style

    2019独角兽企业重金招聘Python工程师标准>>> 最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离Linux内核的coding style要求还是差很多 ...

  6. VMware调试.【转】VMware+Windgb+Win7 内核驱动调试

    ZC:我遇到的问题:com_1 怎么都不成功,记起来 貌似原来也遇到过这个问题,看了一下 VMware里面创建的是 "串行端口 2",于是 将 "com_1"改 ...

  7. 西数加密linux,Symantec PGP Desktop pgpwded.sys内核驱动任意代码执行漏洞

    发布日期:2012-12-24 更新日期:2012-12-27 受影响系统: Symantec PGP Desktop 10.2.0 Build 2599 描述: ------------------ ...

  8. vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式

    通常认为,产生异常的地址是lr寄存器的值,从上面的异常信息可以看到[lr]的值是c01a4e30. 接下来,我们可以通过内核镜像文件反汇编来找到这个地址.内核编译完成后,会在内核代码根目录下生成vml ...

  9. linux 内核驱动的名字,Linux内核驱动的的platform机制

    接下来来看platform_driver结构体的原型定义,在include/linux/platform_device.h中,代码如下: struct platform_driver { int (* ...

最新文章

  1. writing science_Science:“硼铋生辉”——铋氧化还原催化芳基硼酸酯的氟化反应...
  2. 使用结构体的形式使一个函数返回多个数据
  3. GDB调试core文件样例(如何定位Segment fault)
  4. layui 表单动态添加、删除input框
  5. twisted mysql_Twisted MySQL adbapi返回字典
  6. IDEA如何设置鼠标滚轮调整代码大小
  7. 向日葵远程控制软件linux版安装
  8. Zigbee和WiFi的信道重叠
  9. 5位数的数字黑洞是多少_五位数数字黑洞编程
  10. Python数据分析中 DataFrame axis=0与axis=1的理解
  11. 协同过滤算法的简单理解《推荐系统实践》
  12. ubuntu企业微信和微信无法发送和显示图片和截图问题
  13. [20160213]关于ansi语法.txt
  14. 《从0开始学微服务》模块一:入门微服务的学习笔记
  15. 潍坊学院计算机打破世界纪录,牛!2017 ASC世界大学生超级计算机总决赛 潍坊学院每秒31.7万亿次峰值计算刷新世界纪录...
  16. ​今年36岁,北邮硕士毕业,待过字节,阿里,最近被裁员,只能去外包。。。...
  17. 狗为什么吃屎?真相男默女泪,但看完后你也会流口水......
  18. 眼睛不好者的福音,超大字版本万能五笔!
  19. TeraCloud网盘挂载
  20. 1. STM32 环境搭建 + STM32 新建工程 + Yinyuer(ZCY) 的 STM32 寄存器首次点灯

热门文章

  1. 从〇开始可微神经搜索DARTS分析第〇章:意义与基础结构
  2. Node.js 有难度的面试题,你能答对几个?
  3. 【我的OpenGL学习进阶之旅】C++如何加载TGA文件?
  4. 2.STC89C52RC芯片之流水灯程序
  5. 苹果(maccms V10) Python 采集豆瓣评分直接入库。
  6. 从位图图像中读取2D纹理(C ++,OpenGL)
  7. 机器视觉LED光源照明技术说明
  8. ppm理解与代码实现
  9. 宋鸿兵 《货币战争》风暴制造者
  10. 基于QT的电子相册设计与实现