转:https://blog.youkuaiyun.com/zhuhuibeishadiao/article/details/75658816
代码:https://github.com/ZhuHuiBeiShaDiao/NewHideDriverEx
更新:支持seh,原理自己逆下 将seh挂到其它模块上而已.
看网上用此方法隐藏用的挺嗨啊,麻烦打个出处,谢谢了.
没必要藏着,人生没有必要为这些小玩意小打小闹。
看到某些哥们这搞搞那搞搞,BSOD PATCHGUARD 无语,WRK是个好东西啊!
还有半年来也没怎么发博客,惭愧惭愧。
驱动隐藏 最经典的就是断链来一发
但是这个不行 原因我就不说了
网上有的方法
1.断链
2.BufferDriverLoader?(自行google github blackbone)
3.pDriverObject->DriverSection = NULL;
其中1 3 触发PG 2会导致异常处理出错 并且很多函数不能使用
那么有没有什么方法不触发PG 又能隐藏驱动呢
答案是有的
当驱动加载时 会将驱动信息加入那个链表
那么可不可以阻止这个加入的过程呢?
答案是可以的
这个函数是
"MiProcessLoaderEntry"
这个函数将驱动信息加入链表和移除链表
为什么不触发PG?
根据patchguard v3中说法 是因为pg监控其中的某个全局变量 具体忘了 有兴趣自行百度google
此函数也处理这个全局变量 所以没有问题~
函数原型?
MiProcessLoaderEntry(pDriverObject->DriverSection, 0);// 移除
MiProcessLoaderEntry(pDriverObject->DriverSection, 1);// 添加
调用MiProcessLoaderEntry(pDriverObject->DriverSection, 0);
PCHunter显示为红色~
能不能完全隐藏?
pTargetDriverObject->DriverSection = NULL;
// 破坏驱动对象特征
pTargetDriverObject->DriverStart = NULL;
pTargetDriverObject->DriverSize = NULL;
pTargetDriverObject->DriverUnload = NULL;
pTargetDriverObject->DriverInit = NULL;
pTargetDriverObject->DeviceObject = NULL;