windbg拦截驱动加载
来源:互联网 发布:ca网络检测未通过 编辑:程序博客网 时间:2024/06/05 20:38
1、SERVICE_BOOT_START = 0x00000000,被系统loader加载,这类驱动是最早加载的。驱动文件必须放在C:\Windows\System32\drivers目录下,因为此时系统只能读注册表,不能打开文件,不能打出调试信息。看了下面的分析就清楚了。
2、SERVICE_SYSTEM_START = 0x00000001,系统初始化完成后才加载的
3、SERVICE_DEMAND_START = 0x00000003,手动加载
(本文作者附注:原文作者可能是通过sc create service的方式加载legend驱动,对于wdm类型--即支持Pnp的驱动也通过nt!MmLoadSystemImage加载驱动)
环境:win7 32bit,
目标:拦截hookport.sys
方法:
通常拦截驱动,可以在nt!MmLoadSystemImage下断点。
1、显示驱动全名并显示驱动基址:
bp nt!MmLoadSystemImage".if(1){!ustr poi(esp+4); dd poi(esp+0x18);}.else{gc;}"
poi(esp+0x18)就是保存驱动基址的指针ImageBaseAddress
2、nt!MmLoadSystemImage返回后,dd ImageBaseAddress,显示的就是驱动基址
3、给驱动起点函数下断点
bp 驱动基址+poi(poi(驱动基址+0x3c)+ 驱动基址+0x28)
4、运行,就停在驱动的起点函数
NTSTATUS
MmLoadSystemImage (
IN PUNICODE_STRING ImageFileName,
IN PUNICODE_STRING NamePrefix OPTIONAL,
IN PUNICODE_STRING LoadedBaseName OPTIONAL,
IN BOOLEAN LoadInSessionSpace,
OUT PVOID *ImageHandle,
OUT PVOID *ImageBaseAddress
)
但是hookport.sys就不能用上面的方法来,因为它的加载类型是SERVICE_BOOT_START,如下图:
通过研究系统,可以用下面的断点:
下断点bp nt!PnpInitializeBootStartDriver".if(1){!ustr poi(esp+8);}.else{gc;}",此时可以显示驱动的注册表信息
断下来后,在nt!IopInitializeBuiltinDriver里面找第一个call dword ptr [eax],
下断点即可,跟进去就是驱动的入口点了
其实可以计算 INIT:007A79CF call dword ptr [eax] 与nt的rva,直接下断点就可以了 bp nt基址+0x003A79CF
kd> sxe ld:hookport.syskd> gnt!DbgLoadImageSymbols+0x47:83a55fa6 cc int 3kd> lmvm hookportstart end module name8f263000 8f284e80 hookport (deferred) kd> bp 8f263000+poi(poi(8f263000+3c)+8f263000 +28)kd> g
- windbg拦截驱动加载
- windbg拦截驱动
- windbg拦截驱动
- Windbg加载驱动蓝屏分析
- 拦截驱动加载
- 拦截驱动加载
- 修改pe入口方式拦截驱动加载
- 如何使用windbg在驱动加载时下断
- 如何使用windbg在驱动加载时下断
- 如何使用windbg在驱动加载时下断
- 如何使用windbg在驱动加载时下断
- VMWare +WinDbg 调试驱动
- windbg+vmware调试驱动
- Windbg+Vmware驱动调试
- Windbg+Vmware驱动调试
- Windbg 调试驱动 实战
- windbg调试内核驱动
- 驱动初始模型windbg
- CString UTF—8
- 使用JavaScript控制html中节点的增删改
- ZEDBOARD的LINUX如何自动挂载SD卡
- notepad++进行单行、多行、区块注释和取消注释
- Django学习之方法自动地定期执行
- windbg拦截驱动加载
- js全局变量与局部变量
- VMware鼠标前进 后退键
- C语言程序如何从代码变成可执行程序?(预处理总结)
- 分享Kali Linux 2016.2第42周镜像文件
- WebService到底是什么?
- 《Spring揭秘》第三章 读书笔记 —— 掌控大局的IoC Service Provider
- enum与typedef enum的用法
- linux服务器怎么安装pip