-
-
[原创]InfinityHook获取CkclWmiLoggerContext快速简单方法
-
发表于:
2022-9-11 15:42
7848
-
[原创]InfinityHook获取CkclWmiLoggerContext快速简单方法
如题,小白菜今天刚学到了ETWhook,瞻仰拜读各位师傅的代码。发现各位师傅获取CkclWmiLoggerContext的方法都是爆搜.data和.rdata节。但是因为这个是从内核文件PE结构中确定地址。所以要写很多其他代码。而且爆搜,时间复杂度也不是O(1)。小菜这里提供另一种获取CkclWmiLoggerContext的方法,直接通过导出函数获取就行了。不用在额外写获取PE结构以及节区偏移的代码了。
具体方法:
1.通过MmGetSystemAddress()获取EtwRegisterClassicProvider函数地址。通过IDA观察已导出(应该是能获取到,不过我还没试过。)
2.找到EtwpHostSiloState。
3.按照如下操作即可找到CkclWmiLoggerContext
1 2 3 4 | puEtwpDebuggerDataSilo =
(ULONG_PTR * )( * (ULONG_PTR * )puEtwpDebuggerDataSilo + 0x1c8 );
uCkclWmiLoggerContext = puEtwDebuggerDatasilo[ 2 ];
|
在Windbg中如图:
和某师傅在github上发的是获取的一样的.
总结,内核小白菜,逆向小白菜。不知道这个方法是不是很垃圾。只是我刚学完ETWhook时候用硬断找到的。如果很傻的话,还请各位师傅划过吧。
编辑:我发现那个函数获取不了,用另一个导出函数:EtwSendTraceBuffer
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
最后于 2022-9-12 09:16
被Oxygen1a1编辑
,原因: 更正错误