floodsyn
驱动牛犊
驱动牛犊
  • 注册日期2002-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1353回复:10

Softice问题,高手救我!

楼主#
更多 发布于:2002-08-15 11:45
    看了很多有关Softice的文章,着手做网络包过滤,利用passthru进行。遇到了问题,烦恼!请帮助!

    想问如果我改动了驱动程序的代码,需要DEBUG改写后的驱动程序(passthru),我知道用Softice来进行调试。以下是我的调试步骤,请指正:

1、启动Start Softice程序。
2、启动Symbol Loader程序。
3、FILE\\OPEN MODLE载入驱动程序(passthru.sys)。
4、MODLE\\translate
4、MODLE\\LOAD  
5、Ctrl+D进入SoftICE,键入File myfile.c,显示出我要调试的源代码(是C语言写的,不是汇编)。
6、用F8进行单步。

问题出现在第六步,当我用F8走单步的时候,源代码消失,取代出现的是汇编语言,我不熟悉汇编语言,我问了问其他人,他们说可以出现源代码的,还有人说用F3试试,但是我都没有成功,希望告诉我到底我是在哪儿出错!

最新喜欢:

abc0099abc009...
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-08-15 11:50
嗯??你load完了就按F8?这时候当然是汇编码,不是才怪呢。
你可以在你想debug的函数上设断点。
如 bpx myfunction1
那么当myfunction1运行的时候,softice就会跳出来,就可以看到代码了。
建议看看其他的相关的softice使用的帖子。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-15 11:54
你以为驱动程序用F8就能运行了吗?
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-08-15 11:59
财主,这下没有我快了吧。呵呵。
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-15 12:04
财主,这下没有我快了吧。呵呵。

厉害,厉害,佩服,佩服。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
floodsyn
驱动牛犊
驱动牛犊
  • 注册日期2002-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-08-15 13:21
感谢arthurtu,我懂你的意思了,但是还有点不明白的是我如何使我的驱动程序运行到某个函数的位置?拿passthru.sys为例,假设我要运行到ndisxxx这个函数我该怎么做?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-08-15 13:52
是网卡的吗?不熟悉。 ;)
app发出一个请求,IO管理器call相应的例程。
比如,createfile对应driver的xxcreate例程(名字随便)
唉,看书吧。
floodsyn
驱动牛犊
驱动牛犊
  • 注册日期2002-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-08-15 14:36
感谢arthurtu耐心教导,无奈小弟愚笨!

对arthurtu的意思,小弟的理解如下:
1、如果要调试某个驱动程序,用MODLE\\LOAD,
2、用file xxx.c显示其源代码。
3、然后在某个函数前设置断点。
4、退出Softice
5、利用app加载sys使其运行,当sys运行到我设置断点的位置,Softice将自动弹出。
6、用F8单步调试。

不知道小弟的理解正确还使错误?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2002-08-15 15:29
太对了,厉害。
2可以省,或者改成sym来看symbol
另外,F10是step over跟踪
floodsyn
驱动牛犊
驱动牛犊
  • 注册日期2002-07-12
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-08-16 09:12
多谢夸奖!多谢指导!

我已经成功了,但是我发现自己在调试的时候,用F10单步运行时有时候会进入一端汇编例程中,我看说明F10是不进入子程序,所以我猜有时候进入汇编例程应该是正常的,只是想问问这段汇编是哪里冒出来的。

最后还是很感谢arthurtu,去拿分吧!
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2002-08-16 09:40
你在几个函数间跳来跳去的时候看见汇编码很正常。
游客

返回顶部