Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

WinDbg

帖子发起人: 奋斗的猪   发起时间: 2009-04-24 13:50 下午   回复: 9

Print Search
帖子排序:    
   2009-04-24, 13:50 下午
yunitongxin 离线,最后访问时间: 2009/4/24 13:47:08 奋斗的猪

发帖数前200位
注册: 2009-04-24
发 贴: 5
帮忙看看下面的内容什么意思,多谢了。
Reply Quote

程序崩溃后用华医生抓取了一个dump文件,用windbg打开后,栈回溯信息如下:

其中FgcsServer为我的程序名字。估计什么地方出问题了。

0:002> k
ChildEBP RetAddr 
00f3f9cc 0040b575 kernel32!RaiseException+0x53
00f3fa0c 0041a3df FgcsServer!_enc$textbss$begin+0x3d65
00f3fa20 0041b6a7 FgcsServer!_NULL_IMPORT_DESCRIPTOR+0x353
00f3fa24 0041b6db FgcsServer!WS2_32_NULL_THUNK_DATA <PERF> (FgcsServer+0x1b6a7)
00f3fa28 e0ffd900 FgcsServer!WS2_32_NULL_THUNK_DATA <PERF> (FgcsServer+0x1b6db)
WARNING: Frame IP not in any known module. Following frames may be wrong.
00f3fa2c e0ffd8ff 0xe0ffd900
00f3fa30 00c64fe8 0xe0ffd8ff
00f3fa34 004020e2 0xc64fe8
00f3fa38 e0ffd900 FgcsServer!CFgcsServerDlg::OnSysCommand+0x32 [E:\我的程序备份\邯郸改端口\Server端改进\FgcsServerDlg.cpp @ 272]
00f3fa3c 00000000 0xe0ffd900


IP 地址: 已记录   报告
   2009-04-24, 14:41 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
这个栈回溯基本可以说明在这个进程的2号线程中系统的抛出异常函数(RaiseException)被调用,可能是有C++代码throw异常,也可能是有代码直接调用这个API。目前的栈回溯信息还不完整,建议设置好符号服务器后(.symfix c:\symbols),重新加载符号(.reload),然后执行kv命令观察完整的栈回溯和函数参数。

IP 地址: 已记录   报告
   2009-04-24, 15:55 下午
yunitongxin 离线,最后访问时间: 2009/4/24 13:47:08 奋斗的猪

发帖数前200位
注册: 2009-04-24
发 贴: 5
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
这个程序是我写的,运行在2000和xp上没有抛出这个异常。根据您的分析,不知我理解对不:1.程序抛出异常(程序内有错误);2.主动调用RaiseException这个函数(这个我没有做)。那么只能是原因1了,我抓取的信息为:
异常类型:e06d7363
异常标志:1
异常发生地址:7c80bee7
因为程序运行在2003Server上,而我的调试环境为xp,这样是不不可以?
多谢分析了。
IP 地址: 已记录   报告
   2009-04-24, 21:06 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
异常代码e06d7363是ASCII码.msc,这是VC编译器编译使用throw关键字抛出的异常时所使用的异常代码。参见下面的PPT:
http://conference.softcompass.com/cpp2005/record/ppt/cppseminar_exception_raymond.ppt
还是建议你解决好符号问题好,再观察栈回溯。


IP 地址: 已记录   报告
   2009-04-24, 21:13 下午
yunitongxin 离线,最后访问时间: 2009/4/24 13:47:08 奋斗的猪

发帖数前200位
注册: 2009-04-24
发 贴: 5
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
非常感谢您的解答,也谢谢您的Ppt,也非常感谢您的书,都很好。
IP 地址: 已记录   报告
   2009-04-24, 21:57 下午
yunitongxin 离线,最后访问时间: 2009/4/24 13:47:08 奋斗的猪

发帖数前200位
注册: 2009-04-24
发 贴: 5
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
刚才装了一台2003server的机器,调试了一下。输入Kv命令后出现如下信息:
Unable to load image E:\lt\飞鸽传书\FgcsServer.exe, Win32 error 0n2
*** WARNING: Unable to verify timestamp for FgcsServer.exe
ChildEBP RetAddr Args to Child
00f3f9cc 0040b575 e06d7363 00000001 00000003 kernel32!RaiseException+0x53 (FPO: [4,20,4])
00f3fa0c 0041a3df 00f3fa1c 0042cd58 00436078 FgcsServer!operator<<+0x14c (CONV: stdcall) [olevar.cpp @ 756]
00f3fa20 0041b6a7 0041b6db e0ffd900 e0ffd8ff FgcsServer!_logb+0xc2
00f3fa24 0041b6db e0ffd900 e0ffd8ff 00c64fe8 FgcsServer!wctomb+0x10
00f3fa28 e0ffd900 e0ffd8ff 00c64fe8 004020e2 FgcsServer!wctomb+0x44
WARNING: Frame IP not in any known module. Following frames may be wrong.
00f3fa2c e0ffd8ff 00c64fe8 004020e2 e0ffd900 0xe0ffd900
00f3fa30 00c64fe8 004020e2 e0ffd900 00000000 0xe0ffd8ff
00f3fa34 004020e2 e0ffd900 00000000 00000000 0xc64fe8
00f3ffb4 ffffffff 7c824829 00c64fe8 00000000 FgcsServer!RecvFile+0xc2 (FPO: [Uses EBP] [1,347,4])
00f3ffbc 00c64fe8 00000000 00000000 00c64fe8 0xfffffff

其中
FgcsServer!RecvFile是我写的一个线程,继续定位错误该如何做呢?
多谢了。

IP 地址: 已记录   报告
   2009-04-24, 23:28 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
从上面的展回溯来看,是调用wctomb函数将宽字符转换为多字节的字符串(wide character to multibyte character)遇到意外,调用logb函数写日志,后者使用流机制时抛出异常了。
根据其中的提示,可以查看olevar.cpp的源代码,不知道,你使用的是哪种版本的VC,对于VC2005,默认路径为:
c:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\src\mfc
其中的确有一个THROW_LAST()宏。
你可以对FgcsServer!wctomb设置断点,然后跟踪。
另外,上面的提示信息中,WinDBG警告没有找到合适的映像文件,应该通过File > Image File Path来设置这个EXE的路径。然后.reload重新加载符号,你的符号设置还是有问题,栈回溯的中间几行有问题(0xe0ffd900...)。
IP 地址: 已记录   报告
   2009-04-25, 11:45 上午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
请问windbg提示:
1.WARNING: Frame IP not in any known module. Following frames may be wrong.
或者
2.WARNING: Stack unwind information not available. Following frames may be wrong.

是不是表示符号设置一定有问题?
我几次发现在使用kb命令trace系统API函数时时,如果有反病毒软件的.sys出现就会出现上面的提示。但反病毒软件厂商自然不会提供符号的,所以一直不确定kb看到的是否正确。

IP 地址: 已记录   报告
   2009-04-25, 12:27 下午
yunitongxin 离线,最后访问时间: 2009/4/24 13:47:08 奋斗的猪

发帖数前200位
注册: 2009-04-24
发 贴: 5
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
根据您说的,我又在2003Server的平台上调试了,没有了警告信息: WARNING: Unable to verify timestamp for FgcsServer.exe 。但是后面的内容基本一样。
后来我用命令:
bp FgcsServer!wctomb 设置断点(程序中没有直接调用此函数),那可能其它函数调用了此函数,但是程序运行时(在我的机器上)没有触发这个断点。
我用的还是vc6.0。
所以我怀疑是否中毒了,即有攻击heap的病毒,请指教。
IP 地址: 已记录   报告
   2009-04-25, 17:00 下午
Raymond 离线,最后访问时间: 2020/7/3 3:40:25 格蠹老雷

发帖数前10位
注册: 2005-12-19
发 贴: 1,303
Re: 帮忙看看下面的内容什么意思,多谢了。
Reply Quote
先说Merry提到的WARNING 1,其意思是下面这个栈帧的程序指针(实际上就是返回到这个栈帧所对应函数的地址)不属于任何模块。通常,所有函数和代码都是位于某个模块中,因此,当WinDBG遇到一个地址(比如e0ffd900)不属于任何模块时,就会给出这个警告。这可能有几种情况:
1)对于.Net程序,因为即时编译产生的代码可能放在数据堆上,因此有些函数的返回地址就不在模块范围内。回到本例,估计楼主的进程是一个纯粹的本地程序(没有托管代码),因此这个警告不属于.Net的情况。
2)WinDBG的模块信息需要更新,进程内有某个模块,但是WinDBG的列表里缺少这个模块,导致WinDBG找不到函数返回地址的所属模块。
3)程序中故意设计在数据段里的代码。某些程序为了有更好的适应性,会动态生成一段代码,放在数据段上,但是这种做法已经越来越少了,因为这违反安全原则。
4)攻击程序使用缓冲区溢出攻击而导致程序意外返回到数据段执行。

仔细观察本例,e0ffd900曾经是一个参数(可能是缓冲区指针),后来又执行到这里(从目前的栈回溯来看,是这样)。所以可能的情况是RecvFile函数的某个子函数内存在缓冲区溢出方面的漏洞,这个子函数内发生溢出后,正确的函数地址被覆盖掉了,意外的返回到了这个缓冲区内(e0ffd900),CPU然后CPU开始执行缓冲区中的指令了。《软件调试》的22.10节更详细的介绍了缓冲区溢出攻击的原理。
所以现在可以反汇编一下缓冲区内的质量,也就是 u 0xe0ffd900 l100
警告2的字面意思是没有可用的栈展开信息,其实就是WinDBG没有找到关于那个栈帧的符号信息,因此,一旦遇到这个警告就说明WinDBG缺少下面这个栈帧所对应模块的符号文件。





IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » Re: 帮忙看看下面的内容什么意思,多谢了。

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.