kdmapper是github上非常优秀的一个开源项目(链接:https://github.com/TheCruZ/kdmapper),原理是利用系统英特尔漏洞驱动iqvw64e.sys将未签名驱动程序映射到内核空间,由于是直接映射到内核(无需对驱动进行签名),使用kdmapper加载的驱动程序将不在系统PsLoadedModulesList列表中,这意味着大部分ARK工具将找不到驱动的存在,所以又称无痕加载。
使用kdmapper必须满足2个条件,1.必须自定义驱动程序入口函数 2.关闭GS安全检查 ,映射到内核后,我们将无法使用Object指针,但是可以借助已经加载驱动的Object指针来完成我们的内核代码,非常重要的一点是映射的驱动程序不能直接设置回调和创建系统线程,这将会触发系统PG保护,但是可以直接在创建一个驱动对象,使用微软提供的未公开函数IoCreateDriver来创建对象,这样不会触发PG保护,具体实现请参照我的源码。
kdmapper使用方法(驱动程序和kdmapper.exe在同目录):kdmapper.exe -pool MapDriver.sys
如果你对kdmapper感兴趣,请移步kdmapper官方网址下载最新版本源码进行学习,热门的内核映射器有kdmapper,SinMapper,KDU,anymapper
请不要尝试对有保护的游戏进行读写内存,这大概率会遭到封禁,这只是一个简单的驱动程序,你需要更换驱动通讯,主流的IO设备效率低下且富含特征,虽说以手动映射内存方式加载驱动会隐藏驱动痕迹,但还是有很多办法检测到kdmapper,你需要做得是在内核中自主写入NTHeader结构,隐藏PE头,清除MmUnloadedDrivers和PiDDBCacheTable,并且想办法隐藏分配的内存,而不是依靠kdmapper等映射器。
如果你已经理解了我上个帖子的内容(内核shellcode),你可以将驱动代码编写为shellcode执行,将会更隐蔽!
如果源码引起蓝屏或者有错误地方,请联系我!想学ShellCode和内核编程也可以联系我!如果发现有个别小老弟对我开源的源码进行倒卖,也请联系我,我去对他进行安全教育。
部分源码截图:
驱动源码和调用例子已经打包,各位自行下载。