分享
 
 
 

win2003下面显示dbgprint的输出内容

王朝system·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

大家都知道 driver studio 带一个 drivermonitor 的工具,能显示程序里面由 dbgprint 输出的字符串,这里说说他的工作原理,本人也是初学者,不对的地方,请指教.

先说自己的平台环境,使用 win2003 build 3790 rtm 版,这个很重要,dbgprint 的实现在各个平台上是有差异的,这里只是说以上平台的实现,因为我也没有在其他平台上试过,所有下面的程序,如果您想运行的话,请您先看完这个文章,再动手,否则遇到 bugcheck ,别怪我没有提醒.

先说 dbgprint 的实现,呼出 si , bpx ntoskrnl!dbgprint ,然后自己随便写个程序,只要能断点到 dbgprint 函数就ok,可以看到他调用了 vDbgPrintExWithPrefix 函数,f8,step into 看到这个函数把输入的字符串 vnprintf 到一个 local buffer 里面,然后调用了 DebugPrint ,调用这个 DebugPrint 函数的参数有 3 个,后两个可以不去研究,第一个参数是一个 STRING 变量的指针,这个变量构造在 kernel 栈里面,他字符串的 buffer 也是构造在 kernel 栈里面, step into DebugPrint 函数,他也是简单的调用 DebugService 函数,这个函数同样是3个参数,第一个 表示了 调用类型 1 = debugprint,还有其他的数值,比如用于 image load 等等,这里我没有详细的研究,只是了解1 = debugprint,第二个参数是 STRING 变量的实际字符串指针,第三个参数是字符串的长度.记好这几个参数,step into DebugService里面,这个函数就是真正的实现所在了,可以看到,他把 调用类型放到了 eax 里面,字符指针放入 ecx 里面,字符长度放入 edx 里面,然后执行了一个 int 2d. idt 看看 2d 这个中断指向的是 dbgmsg.sys,再看看这个文件是属于 driverstudio 的,看到这里,你应该明白了,如果我们要获取dbgprint输出字符串,只用替换掉 2d 这个中断就ok了.这个也是 dbgmsg.sys 的做法,如果没有安装 driverstuido的话,这个中断指向的是 ntoskrnl.exe 的 _KiDebugService.

总结下,我们要写一个新的中断句柄,替换掉原来的中断处理(当然要记得 jmp 到原来的处理函数里面),在这个处理函数里面,当 eax=1 的时候表示 这次是由 dbgprint 引起的,这个时候 ecx 指向了字符串的首地址,edx 为字符串的长度(这个数据基本可以不使用).这样我们就截获到了 dbgprint 的输出了.剩下的就只是实现而已.至于中断的修改,无非是 sidt 到 idtr 的值,索引 到 2d 中断的入口,保存,修改而已.

这里我们就已经获取到了输出的字符串.剩下一个问题,怎么把这个显示出来,这个也简单了,也就是一个驱动和应用程序通讯的问题,实现方式多种多样,用一个最普通的方式就行了,用 event object,每当驱动获取到了一个字符串,他就把一个 event 设置成 signaled,应用程序 wait 在这个 event 上面,如果 event 变成 signaled,应用程序就 readfile 一下驱动,驱动就返回读取到的字符串...这里的实现都是细节问题了,做成什么样子的完全看你自己的发挥.

到这里就写完了.放上源代码.

编译环境 vs.net 2003 + win2003.ifs.ddk

运行环境 windows 2003

首先用 drivermonitor 加载编译出来的 dbgview.sys 文件

然后运行 dbgmonitor就行了

代码写得很简陋...我也是初学者..难免有错的地方..请包涵..

再次声明...代码的运行环境入上...任何非以上环境的朋友请亲自跟踪 dbgprint 函数明白 传人到 int 2d 的参数以后,再修改本代码,以适合你自己的操作系统,切记....否则 bugcheck 引起的后果自负...起码在 windows 2000 下面,这个代码是不能运行的. xp 下面没有测试过...

附件: 2004-03-30_dbgview.rar (254 K)

下载次数:39

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有