iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1621回复:9

KeBugCheckEx的 问题

楼主#
更多 发布于:2004-09-10 08:32
呵呵,我的 Display Driver 放到了 Driver Chain 中,
在 我 的 Driver中 EngLoadImage 原来的  dislplay driver,
我 根据 其 Module  information  最后 得出 原来 display driver 的 Entry Point 可是 我在调用 该入口 的时候 怎么
能出现  CheckCode 为7F的 异常呢?
我得到 的Module  地址好象 也没错啊,因为 在 我在 取其Entry Point 是,在IMAGE_OPTIONAL_HEADER32 中 AddressOfEntryPoint 的RVA 与静态分析 的是一样的,DrvEnableDriver 就是 Display Driver 的入口 吧
还有 我想获得 DrvEnableDriver 的地址 还有什么方法?
谢谢
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-09-10 10:07
还有,就现在的问题 不是 入口 是否 真确的 问题,我 调试的时候 跟踪 过了,进入 原来的显示 驱动能 正确的 初始化,
怎么我的 显示 驱动 初始化 了两次,第一次没错,就是第二次的时候 在 Win32k.sys 里一个地方 抛出7F的 CheckCode 的异常
我还没仔细 看 在什么地方 出现的,有经验的大哥,什么情况下 会有CheckCode 为7F的 Exception 出现呢,DDK 的 BugCode.h 说的 与硬件 相关,到底是怎么回事呢?
谢谢!
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-09-10 13:05
问题 怎么好象  是 softice 的 siwvid.sys 驱动 引起的呢?
跳到 siwvid.sys 中,引起 一个 死 loop
我 反汇编 看  DrvEnablePDEV 入口处  很归整,push ebp,mov ebp,esp ,sub esp,130h
但是  jawsid.dll就没问题,不知道 怎么搞的!
那位 仁兄 过来 支支 招啊!
tornadohf
驱动牛犊
驱动牛犊
  • 注册日期2004-08-21
  • 最后登录2007-12-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-09-10 21:25
hRealDriver = EngLoadImage("RealDriverName");
pDrvEnableDriver = EngFindImageProcAddress(hRealDriver, "DrvEnableDriver");
tornadohf
驱动牛犊
驱动牛犊
  • 注册日期2004-08-21
  • 最后登录2007-12-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-10 21:34
"我的 Display Driver 放到了 Driver Chain 中"
是什么意思?
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-09-10 23:45
DrvEnableDriver  没有导出的 ,你这样是取不到 的,只能是 通过 zwXXX获得 模块基址, pe 文件头 取  入口也!
不过仍然 谢谢 大哥啊!
其实 我的没有 问题,我反汇编 了 我的显示驱动,我取得 的 DrvXXX的地址没错 ,启动时 调试 也是对的,就是 进了 siwvid.sys 的调试 中断 例程后 堆栈 平不了衡了!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
6楼#
发布于:2004-09-11 10:33
早说过了,用HOOK,ZWSETSYSTEMINFORMATION的方法在启动时来挂接所有显卡驱动.显卡加载的时候会调用这个函数
ZwSetSystemInformation(nType, pSystemInfo, nSizeSystemInfo
当nType为ZWSYSINFO_LOADIMAGE检测加载的是否为显示驱动,如是就进行HOOK
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-09-11 11:32
wowocock 大哥,呵呵,谢谢了
tornadohf
驱动牛犊
驱动牛犊
  • 注册日期2004-08-21
  • 最后登录2007-12-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-09-11 16:25
ddk上说:
“DrvEnableDriver must be implemented in all graphics drivers. If you use the DDK build tools, and have set TARGETTYPE to GDI_DRIVER (see Building a Printer Graphics DLL), this function must be named DrvEnableDriver. This is the only display driver function that must be accessed by name. ”

This is the only display driver function that must be accessed by name.

OS也应该是通过name来获得display driver的这个函数的,你怎么确定没有export DrvEnableDriver? 你有试验过不行的吗?
iterater
驱动牛犊
驱动牛犊
  • 注册日期2004-07-30
  • 最后登录2006-10-20
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望6点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-09-15 22:02
tornadohf 兄
 
你那样用也 能行,我试了,我以前用过一次,好象没成,后来看 export table,也没有 该函数,就没有 这样 用了,谢谢!
游客

返回顶部