dump 定位分析

10 篇文章 1 订阅
1 篇文章 0 订阅
文章讲述了在没有pdb文件的情况下,如何使用windbg进行dump分析以定位程序崩溃的原因,以及如何借助ida的伪代码视图辅助分析,最终找到了崩溃发生在ScreenLock_mf模块的0x902e地址,并追踪到可能的问题函数OnUdpRspMsg。
摘要由CSDN通过智能技术生成

在缺少pdb的时候如何分析dump?

windbg+ida

Windbg定位崩溃位置

  1. 通过windbg打开dump,并且分析dump !analyze -v
    在这里插入图片描述

分析:

  • 分析dump: !analyze -v
  • 错误原因:读取空指针
  • 错误线程:00001e04,可通过命令~查看线程列表,~N切换线程,N表示线程序号
  • 查看崩溃堆栈:.ecxr;kbn,截图上的崩溃调用堆栈
  • 查看当前帧信息:.frame N,N为第几帧的序号,默认为0

结论:

  • 由于缺少pdb无法定位具体代码,但是可以知道崩溃位置位于:ScreenLock_mf+0x902e,崩溃第一帧。

IDA定位大概原因(新手)

  1. 通过IDA打开ScreenLock_mf.exe(不管是exe还是dll,都选择打开模式pe.dll)
    在这里插入图片描述
  2. 打开之后,切换到IDA View,并且切换至最顶部,查看镜像基址Imagebase : 400000
    在这里插入图片描述
  3. 通过windbg得到崩溃地址ScreenLock_mf+0x902e,即:Imagebase + 0x902e=40902E
  4. G键跳转到崩溃地址(输入的地址不含空格
    在这里插入图片描述
  5. 在定位地址按tab键,即可切换到伪代码view,确定崩溃函数。
    在这里插入图片描述
  6. 查看该函数的相关引用,按tab键切换到IDA View。往上翻直至分割线。
    在这里插入图片描述
  7. 双击引用的函数:OnUdpRspMsg,即可切换到调用崩溃函数isPackidValid的地方,并且查看伪代码,确定上下文的伪代码。
    在这里插入图片描述
  8. 打开源码,通过伪代码定位源码,检查崩溃原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值