内核驱动检测
1. DriverObject->DriverSection结构的双向链表枚举内核驱动模块(可能性很大)
2. NTQuerySystemInformation(SystemModuleInformation)枚举驱动(可能性很大)
3. 暴力枚举内核模块(可能性很小)
4. 驱动注册的虚拟设备对象检测
可以使用kdmapper来隐藏驱动
DLL模块检测
1. EnumProcessModules() -> GetModuleFileNameEx() -> NTQueryInformationProcess()
2. CreateToolhelp32Snapshot(HT32CS_SNAPMODULE) -> NTQueryInformationProcess()
3. NTQueryInformationProcess(ProcessBaseInformation) -> 本质就是枚举Peb -> dll信息
4. 遍历 PEB(RtlGetCurrentPeb()函数来获取),前三种的本质就是这个方式
5. HashTable(LIST_ENTRY保存在ntdll里的链表) -> _LDR_DATA_TABLE_ENTRY -> HashLinks(_LIST_ENTRY)
6. VritualQuery枚举虚拟内存属性(抹去pe头即可) 参考前面的驱动模块抹pe头
7. NTQueryVirtualMemory()扫描虚拟内存
文件检测
1. NTCreateFile()打开文件