阅读:2996回复:21
用softice如何调试passthru????
如何安装编译好的passthru.sys呀,看帮助无须一定要sfiler.dll的,可是实际安装时却一定要sfilter.dll,到底怎么回事,而且安装好后,passthru.sys怎么还可以删除呀,这到底算安装起来没有呀??还有我是用checked build环境来编译passthru.sys的,应该是包含了调试信息了呀,怎么在softice for 2K下选module open可以正常打开,但选module-->load怎么就出错呀,显示“GetProAddress on DBI DLL failed”,怎么回事呀,谁能帮我??
|
|
沙发#
发布于:2002-03-15 11:38
调试没有信息的问题您可以这样做做,把module open中的路径指向您的调试目录中的passthru.sys 而不是打开winnt\\system32\\drivers\\passthru.sys.
|
|
|
板凳#
发布于:2002-03-15 12:07
在LOAD之前要先Translate,得到了符号信息才可以!
|
|
地板#
发布于:2002-03-15 12:30
那为什么安装好passthru.sys后winnt\\system32\\drivers\\passthru.sys. 这个文件还可以删除呀,它到底有没有工作起来呀?
|
|
地下室#
发布于:2002-03-15 12:40
你们2个说的方法我都试了,一样的错误提示呀,对了,我的checked build版的passthru.sys是15K,free build版的是12K,感觉也不是太对呀,有调试信息的文件应该比没调试信息的文件大很多的呀,是我哪里做错了吗?还有就是sfilter.dll到底有没有用的呀,为什么安装netsf.inf时一定要sfilter.dll?看DDK帮助里说可以不要的呀???
|
|
5楼#
发布于:2002-03-15 23:19
你是不是没有安装VC6啊!需要一个动态连接库,建议你把VC6,SDK,DDK都安装上,当然啦,前提就是要把2000安装好,最好还安装一个调试软件建议使用SOFTICE
SFILTER。DLL是可以不需要的,只要打开INF文件进行修改就可以了! |
|
6楼#
发布于:2002-03-16 16:58
谢谢,我确实没有在2000下装VC6,现在我装上后就可以调试了。但是在调试中又出现问题了,我的操作步骤:
1。以boot方式安装softice for 2000 (那2M多的2000补丁我还没装,因为我想看看没有它的后果先) 2。打开Soft-ICE->Symbol Loader工具。 3。用\"File\" 菜单中的\"Open Module ...\"菜单项打开需要调试的可执行文件c:\\winnt\\system32\\drivers\\passthru.sys(之前已经把checked build版本的passthru.sys用netsf.inf安装好了) 4。用\"Module\"菜单中的\"Load\"菜单项装载调试符号文件 5。用\"Module\"菜单中的\"Translate\"菜单项将需要调试的文件转换成Soft-ICE的 NMS调试符号文件 6。按Ctrl+D组合键激活SoftICE 7。使用“file protocol.c”打开这个源文件,找到ptreceive函数中的某行,按F9设置断点(用“bpx ptreverve”也试过) 8。按F5。 然后用别的机器去浏览2000机器的网页,网页可以打开,但是softice没有任何反应,怎么回事??? 我感觉和我开始说的一样,就是感觉passthru.sys根本就没在内存运行起来呀!我该怎么做呀,是我开始的步骤有问题还是别的原因?如果是passthru.sys没运行的话,我如何让它运行起来呀,这种核心驱动用手工方法去运行我还真不会呀,再说想想这类程序应该是安装后就自动运行的呀。 |
|
7楼#
发布于:2002-03-16 20:15
第一个,你要确定你的驱动已经加载了!你可以在系统启动之后呼出SOFTICE,看看的你源代码所对应的32位地址,如果这个地址小于0X80000000的话,那么你的驱动没有加载
第二个,如果你想要把拨号网络的那部分数据包也拦截,那么这个INF要有改动,并且驱动程序也要改动! |
|
8楼#
发布于:2002-03-16 20:19
还有就是你的步骤不对,现在可能不会出问题!但是到以后就一定会,特别是对源代码改动了之后!
你应该是先OPEN一个。SYS 然后Translate 之后就是LOAD 不过也可以从新OPEN一个。NMS文件进行LOAD |
|
9楼#
发布于:2002-03-16 22:25
谢谢这位朋友这么热心的关照,能告诉我QQ吗?我想有机会在线问问题,这样可以提高我学习和开发的速度。
因为我第一次搞驱动程序,所以也是第一次用SOFTICE,对它还不是很熟悉,我希望是边实践边学习。我现在不想用SOFTICE看地址,因为要真的看懂,我想我又要重新复习汇编了。好了,我现在可以比较肯定的感觉到passthru.sys根本就没加载起来,但还是上面的话,我是按照DDK中帮助那样安装netsf.inf来安装passthru.sys的,安装好后系统确实把passthru.sys复制到系统的驱动目录下了,但是我居然还可以在这个目录里删了它,所以很明显根本就没运行起来,我如何让这个驱动程序运行起来呀,你用过passthru.sys吗??其实我搞这个中间驱动的动力就是希望通过编写2端的网络中间驱动来改写TCP头中的一些标志位,来使网络包穿过防火墙的。希望你们可以帮我比较快速的搞定哦,呵呵。 |
|
10楼#
发布于:2002-03-17 19:17
其实系统有没有加载驱动程序和能不能删除该驱动是没有关系的!就算系统加载了驱动程序,也可以把该驱动程序删除。
|
|
11楼#
发布于:2002-03-18 08:50
感觉怎么象比挤牙膏还累呀,朋友你能多说点吗?你用过passthru没有呀,现在按你的方法我用ctrl+d呼出softice看到的地址是大于80000000的,但是我没还没LOAD passthru它就已经是这个地址了呀,当我load后,依然还是这个地址,大于8000000,我已经把断点设置在driverentry内的第一个函数调用行了,可是当我上网时依然没有出现断点的调试窗口呀,怎么回事,帮帮我呀。
|
|
12楼#
发布于:2002-03-18 12:29
拜托,你的问题也是一个一个的挤出来的啊!
如果按照你说的,那么驱动是加载了! 但是你的断点应该设在收发数据包的函数那里,因为那时侯驱动程序的初始化例程已经运行了!并且也说了,如果是在本机拨号上网的话,安装没有改动过的PASSTHRU是不能够拦截到这部分数据包的! |
|
13楼#
发布于:2002-03-19 10:38
我用的是网卡,不是猫呀。
我把断点设置在protocol.c中的ptreceive函数中的第一个函数调用出呀,希望有网络连接的时候就断下来给我看呀,可是没有一点放映。 |
|
14楼#
发布于:2002-03-19 11:10
啊?太高兴了,可以了,谢谢呀,上面的牙膏事件是我不对,我当时心情太急了,SORRY。刚才我去把protocol.c打开,然后给每个函数都设置上3,4个断点,这样就断下来了,呵呵,第一个断的函数是ptreceivepacket而不是ptreceive,看来这个ptreceive函数好象启动之后就没用到了,呵呵。以后我想我还是会来请教你的,到时能给你EMAIL询问吗?
|
|
15楼#
发布于:2002-03-19 11:48
好啊!还有,分呢!
|
|
16楼#
发布于:2002-03-19 12:17
好啊!还有,分呢! 我倒!你还需要分啊! |
|
|
17楼#
发布于:2002-03-19 14:49
当然啦!不要白不要,要了也白要,白要谁不要!
|
|
18楼#
发布于:2002-03-27 13:44
谢谢,我确实没有在2000下装VC6,现在我装上后就可以调试了。但是在调试中又出现问题了,我的操作步骤: 我遇到了和你一样的问题。仔细看完这一版的问答。很高兴得知你已经可以调试passthru.sys! 恳请,帮一下我这个后之后觉的人。 问题: 1.调试之前是否一定要将netsf.inf安装好,然后再用\"symbole loader\"? 2. softice 一手动模式启动行吗?(我想可以吧) |
|
19楼#
发布于:2002-03-27 21:38
1,是可以的,不过,如果你还没有安装驱动程序而直接LOAD符号的话,那么这些符号就没有对应的线形地址。这个时候是可以设置断点的,当你加载了驱动之后,当运行到这些断点的时候就会弹出SOFTICE(当然啦,必须是已经安装了),一般上都是为了调试驱动程序的一些初始化代码
2,SOFTICE是可以手动加载的,在开始菜单里面有! 一般都是先TRANSLATE符号再LOAD的 |
|
上一页
下一页