Re: 张老师,请教一个问题

C/C++本地代码调试

张老师,请教一个问题


HiJack 2014-11-21, 15:40 下午
今天在分析一个dump时,遇到一个奇怪的问题,烦请张老师帮忙看一下。

ExceptionAddress: 08ff0bff (activity!ActivityUIManager::onAnnualCeremonyZhanbaoMsg+0x000000b5)
   ExceptionCode: c0000005 (Access violation)
   ExceptionFlags: 00000000
   NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 46a0c575
Attempt to write to address 46a0c575

LAST_CONTROL_TRANSFER:  from 08fd973c to 08ff0bff

FOLLOWUP_IP: 
activity!ActivityUIManager::onAnnualCeremonyZhanbaoMsg+b5
08ff0bff ff8d4decc645    dec     dword ptr [ebp+45C6EC4Dh]

STACK_TEXT:  
00d9d928 08fd973c  05da4750  07550678 00d9d990 activity!ActivityUIManager::onAnnualCeremonyZhanbaoMsg+0xb5 
00d9d944 08ff3f0a   05da4750  0000000a  09022088 activity!ActivityModule::createInstance+0x31 
00d9d95c 01675bcb 05da4750  00e9fd50   05dc8bcc  activity!OnLoadMusicAddon+0x1d 

这是windbg给出的信息,但我在onAnnualCeremonyZhanbaoMsg上反汇编,发现onAnnualCeremonyZhanbaoMsg+0xb5 这个偏移不是一条完整的汇编指令,完整的指令是
 439 08ff0bfb e89d69feff      call    activity!QMap<QString,QVariant>::insert (08fd759d)
 439 08ff0c00 8d4dec           lea     ecx,[ebp-14h]
 439 08ff0c03 c645fc03        mov     byte ptr [ebp-4],3

也就是说,指令截断了,所以FOLLOWUP_IP才会显示成
activity!ActivityUIManager::onAnnualCeremonyZhanbaoMsg+b5
08ff0bff ff8d4decc645    dec     dword ptr [ebp+45C6EC4Dh]

这是怎么回事,是windbg的bug吗?谢谢张老师




  
 





Re: 张老师,请教一个问题


HiJack 2014-11-23, 00:14 上午
没人遇到过吗

Re: 张老师,请教一个问题


格蠹老雷 2014-11-24, 17:13 下午
看起来确实是程序指针指错位了,可能是溢出导致的

Re: 张老师,请教一个问题


HiJack 2014-11-26, 17:08 下午
那是什么溢出导致eip错位呢?感觉不像是覆盖返回地址的溢出

Re: 张老师,请教一个问题


qstesiro 2015-01-02, 15:01 下午
通常能够导致ip不正确都是因为栈损,而栈损一般分三种:
1、错误约定(调用约定不一致);
2、溢出;
3、脏数据(并发访问导致栈数据被破坏);
现在这个情况ip比正常的返回地址少了一个字节,因为从程序来看是一是同一模块所有基本可以排除错误约定问题,你可以看看那个insert函数中是否有溢出或是分析一下程序是对于那个map有并发操作,如果问题可以复现,可以对于通过对于特定的位置下数据断点,看是那部分代码对于栈上的返回地址作过修改;

Re: 张老师,请教一个问题


HiJack 2015-05-11, 11:33 上午
谢谢,又学到东西了

Re: 张老师,请教一个问题


goandgo 2015-05-12, 08:59 上午
学习到新东西了

Powered by Community Server Powered by CnForums.Net