黑客程序设计
日期:2007年5月3日 作者: 查看:[大字体 中字体 小字体]-
Windows内核调试器原理浅析
前段时间忽然对内核调试器实现原来发生了兴趣,于是简单分析了一下当前windows下主流内核调试器原理,并模仿原理自己也写了个极其简单的调试器:)
WinDBGWinDBG和用户调试器一点很大不同是内核调试器在一台机器上启动,通过串口调试另一个相联系的以Debug方式启动的系统,这个系统可以是虚拟机上的系统,也可以是另一台机器上的系统(这只是微软推荐和实现的方法,其实象SoftICE这类内核调试器可以实现单机调试)。很多人认为主要功能都是在WinDBG里实现,事实上并不是那么一回事,windows已经把内核调试的机制集成进了内核,WinDBG、kd之类的内核调试器要做的仅仅是通过串行发送特定格式数据包来进行联系,比如中断系统、下断点、显示内存数据等等。然后把收到的数据包经过WinDBG处理显示出来。
在进一步介绍WinDBG之前,先介绍两个函数:KdpTrace、KdpStub,我在《windows异常处理流程》一文里简单提过这两个函数。现在再提一下,当异常发生于内核态下,会调用KiDebugRoutine两次,异常发生于用户态下,会调用KiDebugRoutine一次,而且第一次调用都是刚开始处理异常的时候。
当WinDBG未被加载时KiDebugRoutine为KdpStub,处理也很简单,主要是对由int 0x2d引起的异常如DbgPrint、DbgPrompt、加载卸载SYMBOLS(关于int 0x2d引起的异常将在后面详细介绍)等,把Context.Eip加1,跳过int 0x2d后面跟着的int 0x3指令。
真正实现了WinDBG功能的函数是KdpTrap,它负责处理所有STATUS_BREAKPOINT和STATUS_SINGLE_STEP(单步)异常。STATUS_BREAKPOINT的异常包括int 0x3、DbgPrint、DbgPrompt、加载卸载SYMBOLS。DbgPrint的处理最简单,KdpTrap直接向调试器发含有字符串的包。DbgPrompt因为是要输出并接收字符串,所以先将含有字符串的包发送出去,再陷入循环等待接收来自调试器的含有回复字符串的包。SYMBOLS的加载和卸载通过调用KdpReportSymbolsStateChange,int 0x3断点异常和int 0x1单步异常(这两个异常基本上是内核调试器处理得最多的异常)通过调用KdpReportExceptionStateChange,这两个函数很相似,都是通过调用KdpSendWaitContinue函数。KdpSendWaitContinue可以说是内核调试器功能的大管家,负责各个功能的分派。这个函数向内核调试器发送要发送的信息,比如当前所有寄存器状态,每次单步后我们都可以发现寄存器的信息被更新,就是内核调试器接受它发出的包含最新机器状态的包;还有SYMBOLS的状态,这样加载和卸载了SYMBOLS我们都能在内核调试器里看到相应的反应。然后KdpSendWaitContinue等待从内核调试器发来的包含命令的包,决定下一步该干什么。让我们来看看KdpSendWaitContinue都能干些什么:
case DbgKdReadVirtualMemoryApi:
KdpReadVirtualMemory(&ManipulateState,&MessageData,ContextRecord);
break;
case DbgKdReadVirtualMemory64Api:
KdpReadVirtualMemory64(&ManipulateState,&MessageData,ContextRecord); - [1] [2] [3] [4] [5] [6] [7] [8] 下一页
-
- 黑客程序设计 相关文章:
- ·Windows Vista中如何调整雅黑字体DPI
- ·防范黑客攻击Oracle系统的八大常用方法
- ·黑客如何利用文件包含漏洞进行网站入侵
- ·知己知彼 看黑客如何入侵Linux操作系统
- ·网络安全专家支招防范黑客攻击九大方法
- ·黑客攻击的新目标:VoIP电话
- ·黑客入侵前的信息收集
- ·Windows防黑技巧大全
- ·QQ的黑名单有什么用?
- ·网管必读 黑客通过什么方式入侵网吧
- 黑客程序设计 相关软件
- ·《冰封王座》地图:黑客帝国 4.0 汉化
- ·《黑名单上的人》05蘑菇行动(198303版)
- ·《黑名单上的人》04地下印刷所(198212版)
- ·《黑名单上的人》03叛徒(198210版)
- ·《黑名单上的人》02夜袭车库(198209版)
- ·《黑名单上的人》01特别行动小组(198208版)
- ·《暗黑破坏神》崔斯特瑞姆背景音乐
- ·《魔法门外传5》黑暗魔君大反扑试玩
- ·美国厚黑学--人生必胜之道
- ·《黑暗军团》中世纪即时战略游戏试玩
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:探讨开源软件的互操作策略
下一篇:业务需求访谈中需要注意的重要法则
精品推荐
热点TOP10
- ·Visual Studio 2005集成开发环境图解
- ·利用UML类图设计Java应用程序详解(1)
- ·利用iTextSharp生成Pdf一个小例子
- ·软件工程的未来之路与我们的解决之道?
- ·VS2005(c#)项目调试问题解决方案集锦
- ·Atlas应用程序的调试技巧
- ·代码编写中的心理学与美学
- ·函数库、组件产品的测试方法
- ·IBM 建立商业解决方案中心
- ·IBM Rational推出SOAD策略
- ·通过RUP用例进行需求管理的可追踪性策略(1)
- ·软件项目在变化的需求中获得成功(1)
- ·界面需求的分析方法(1)
- ·探究需求管理的本质(1)
- ·利用数据绑定和模板创建Atlas应用程序
- ·BEA和Siebel联合提供CRM软件
- ·BEA新任亚太区总经理 曾任惠普软件部高管
- ·Java从老虎变野马 好事还是坏事?
- ·Web服务的期望与现实
- ·SAP:未来管理软件将像玩具
