首页
社区
课程
招聘
[旧帖] 程序调试时_chkesp的问题,谢谢!! 0.00雪花
发表于: 2009-9-22 14:04 1307

[旧帖] 程序调试时_chkesp的问题,谢谢!! 0.00雪花

2009-9-22 14:04
1307
最近在调试段代码时,发现点问题,看了反汇编,还是不明白原因,恳请哪位高人指点,不胜感激!
下面的一句
  pinstance->Decfun(pinstance->lplay_handle, (char *)picture_buf, mLength, &Frame_info, pinstance->pUser, reserve);
我的程序每次到这里都出错!!

pinstance->Decfun是一个函数指针。
格式为VOID (* DecCBFun)( LONG lHandle,CHAR * pBuf,LONG lSize, FRAME_INFO * pFrameInfo, VOID* pUserData, LONG lReserved)

 
02408855   mov         esi,esp                                 '保存esp
02408857   mov         eax,dword ptr [reserve] 
0240885D   push        eax                                      '参数入栈 esp - 4
0240885E   mov         ecx,dword ptr [ebp-4]
02408861   mov         edx,dword ptr [ecx+0AF0h]
02408867   push        edx                                       '参数入栈 esp - 4
02408868   lea         eax,[Frame_info]
0240886E   push        eax                                       '参数入栈 esp - 4
0240886F   mov         ecx,dword ptr [mLength]
02408875   push        ecx                                       '参数入栈 esp - 4
02408876   mov         edx,dword ptr [ebp-6Ch]
02408879   push        edx                                       '参数入栈 esp - 4
0240887A   mov         eax,dword ptr [ebp-4]
0240887D   mov         ecx,dword ptr [eax+0AE8h]
02408883   push        ecx                                       '参数入栈 esp - 4
02408884   mov         edx,dword ptr [ebp-4]
02408887   call        dword ptr [edx+0BA0h]          '???调用函数指针,我在这里发现函数调用后esp已经恢复成原来的值
0240888D   add         esp,18h                                '???esp恢复,这里再+18h已经与原来esp不相同了
02408890   cmp         esi,esp                                  '与原来的esp比较
02408892   call        _chkesp (02427cb0)               '出错


为什么这里call调用后,esp会马上恢复,而不需要再 + 18h??
02408887   call        dword ptr [edx+0BA0h]        

恳请哪位高人指点解惑,非常谢谢!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
这个函数是_stdcall的调用约定
而你却采用了_cdecl的调用约定
结果堆栈被多平衡了一次
到检查堆栈的时候自然出问题了
检查你调用约定
2009-9-22 14:22
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
原来如此啊,我查下,非常感谢!
2009-9-22 14:25
0
游客
登录 | 注册 方可回帖
返回
//