总结一下得到内核模块地址的方法,参考N多大牛
//combojiang: http://hi.baidu.com/combojiang/blog/item/bfa7a6d9f1c913ee38012f28.html
// combojiang: http://hi.baidu.com/hu3167343/blog/item/3fb1cc91e9582507d31b7023.html
// combojiang: http://bbs.pediy.com/showthread.php?t=58447
// 莫灰灰: http://hi.baidu.com/hu3167343/blog/item/3fb1cc91e9582507d31b7023.html
// 还有一些,忘了出处了,一并感谢,此次只是做个总结
网上说的比较常见的4种方法:
1、通过DriverEntry传入的DriverObject参数的DriverSection成员指向LDR_DATA_TABLE_ENTRY结构,通过遍历这张表得到ntoskrnl的基址和大小
2、ZwQuerySystemInformation大法
3、搜索内存
4、利用KPCR结构
存在的问题:
1、第1种方法和第4种方法得到的结果比ZwQuerySystemInformation少一个
2、第1种方法如果输出BaseDllName是ntoskrnl.exe,如果输出FullDllName则是:\WINDOWS\system32\ntkrnlpa.exe,地址都是:804d8000,不明白为何
环境:虚拟机VMWare:WIN XP SP3 + WDK ---- WINXP Check方式编译
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
