znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
阅读:6585回复:7

怎么在内核调试模式调应用程序(驱动程序,应用程序一锅汇了)

楼主#
更多 发布于:2009-01-18 21:06
http://advdbg.org/blogs/advdbg_system/articles/1492.aspx

先看一下上面的张银奎大侠的文章,然后我们再分析一下怎么做。
看了上面的文章,也许你已经成功了,那就没必要看下面的文字 ,如果你还没有明白,我们就实操一下:

环境:

双机内核模式调试状态,即通过windbg连接另一台机器调试驱动,不管对方是真机还是虚拟机。此时,我们可以调试驱动程序(我假设你已经会调驱动,并且环境准备好了,想调的应用程序的pdb文件也准备好了).

通常,我们可能会在目标机(被调试的机器上)再运行一个windbg或者用vc的远程调式工具进行调试。但是我现在的所有工程,包括测试程序都是用winddk编译的,改用vc调试比较麻烦,现在就是想在调驱动的同时继续调试我的测试程序,这样方便又直接。


现在处于kd> 状态 ,可以直接设置驱动程序的断点,但是你要是设置应用程序的断点,会收到错误消息,说找不到这个模块。好,我们就来记它能找到:

!process 0 0
会出列进程相关信息,如
PROCESS 820a36d0  SessionId: 0  Cid: 07cc    Peb: 7ffd9000  ParentCid: 01d4
    DirBase: 09b00220  ObjectTable: e18ecc48  HandleCount: 104.
    Image: alg.exe

PROCESS 820d2020  SessionId: 0  Cid: 0118    Peb: 7ffdf000  ParentCid: 00c4
    DirBase: 09b00260  ObjectTable: e19252b0  HandleCount: 470.
    Image: explorer.exe

PROCESS 82232b58  SessionId: 0  Cid: 016c    Peb: 7ffdf000  ParentCid: 0118
    DirBase: 09b002c0  ObjectTable: e188c9d8  HandleCount:  76.
    Image: epsng_certd.exe

PROCESS 82170020  SessionId: 0  Cid: 00d8    Peb: 7ffde000  ParentCid: 0118
    DirBase: 09b002a0  ObjectTable: e1916e98  HandleCount:  36.
    Image: VMwareTray.exe

PROCESS 821353d8  SessionId: 0  Cid: 0170    Peb: 7ffdc000  ParentCid: 0118
    DirBase: 09b002e0  ObjectTable: e1c8e138  HandleCount: 128.
    Image: VMwareUser.exe

找到你关心的进程 ,如 explorer.exe ,它的进程 PROCESS 值,其实就是EPROCESS, 为 820d2020  
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2009-01-18 21:14
然后,你要切换进程上下文

.Process  820d2020   注意:这里的Process 前面有一个点,不要看成你的显示器上的灰尘

这样,就处于这个进程上下文了。

.reload /user  加载用户模式符号文件  (保证你的符号文件处于正确的目录中)

然后就可以直接 下断点了,比如

bp explorer!xxxxfunc

其它的没啥区别了
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
zhzhtst
驱动牛犊
驱动牛犊
  • 注册日期2006-07-11
  • 最后登录2018-05-05
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望153点
  • 贡献值0点
  • 好评度22点
  • 原创分4分
  • 专家分0分
板凳#
发布于:2009-01-20 15:53
Microsoft怎么就不能提供一个addr呢?
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2009-01-21 09:08
找到你关心的进程 ,如 explorer.exe ,它的进程ID为 820d2020  
应该是EPROCESS,不然菜鸟会晕的.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
地下室#
发布于:2009-02-04 16:16
wowo说的对,是EPROCESS 不是进程ID, 老鸟们一看值就知道我的笔误,小鸟们....抱歉了,但是确可以实操.haha

每个值前面其实都有值的名称,那天太兴奋了,就随口这么一说,抱歉各位...
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
amicablehj
驱动牛犊
驱动牛犊
  • 注册日期2006-10-06
  • 最后登录2011-04-18
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望76点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2009-04-07 20:31
很有用!谢谢
斯蒂芬
aaaabbbb12345
驱动牛犊
驱动牛犊
  • 注册日期2009-07-31
  • 最后登录2010-07-18
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望71点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2010-07-17 19:57
矛塞顿开..
游客

返回顶部