+ -
当前位置:首页 → 问答吧 → VC内写入汇编,程序执行顺序不对,为什么?

VC内写入汇编,程序执行顺序不对,为什么?

时间:2011-07-11

来源:互联网

以下是写在一个注入的DLL对话框上的一个BOTTON按键处理程序,为什么先执行Sleep(1000);
然后在从头到底执行一次,跳过Sleep(1000);因为在DLL的钩子函数里我不知道怎么调试,
请大侠留下高招,谢谢,我已经试了几百次了,大括号应该不会套错的。谢谢


DWORD CallAddress1=0x008ef3a0;
DWORD CallAddress=0x006d44f0;
DWORD BBID=0;
DWORD FUBBID=0; 
DWORD ZHUBBID=0;
DWORD fubaoflag=0;
DWORD CallAddress2=0X006D4830;
DWORD CallAddress3=0x00748620; 
DWORD CallAddress4=0x00748580; 
DWORD CallAddress5=0x006a66f0;
DWORD CallAddress6=0x006A6A90; 
DWORD *wupingnumAddress=(DWORD*)
DWORD CallAddress7=0x006a8850
DWORD TEQIUID=0;

void CS3DHookDlg::OnButton1() 
{  
 UpdateData(true);
  DWORD Base3=*(DWORD*)(0x008cbeec);
  Base3=*(DWORD*)(Base3+0x10);
  Base3=*(DWORD*)(Base3+0X4*m_ZHUBAOBAO); 
  Base3=Base3+0x4;
  DWORD *PP=(DWORD*)Base3;
  DWORD ZHUBBID=*PP;
 for(int a=1;a<11;a++)  
{


  DWORD Base10=*(DWORD*)(0x008cbeec);  
  Base10=*(DWORD*)(Base10+0x10);
  Base10=*(DWORD*)(Base10+0X4*a); 
  Base10=Base10+0x4;
  DWORD *ppp=(DWORD*)Base10;
  FUBBID=*ppp;
   

__asm{  
PUSH 0
PUSH FUBBID
MOV ECX,0X008CA4C0
CALL CallAddress6 
}


 __asm{  
push 0
push FUBBID
push ZHUBBID
mov ecx,0x008ca4c0
call CallAddress5
}



DWORD WUPINGNUM=*wupingnumAddress;  
 DWORD Base4=*(DWORD*)(0x008cbee8);
  Base4=*(DWORD*)(Base4+0x10);
  Base4=*(DWORD*)(Base4+0X4*0); 
  Base4=Base4+0x4;
  DWORD *wupingid1=(DWORD*)Base4;
  TEQIUID=*wupingid1;

Sleep(1000);
 __asm{  
push 1
push 1
push TEQIUID  
push ZHUBBID
mov ecx,0x008ca4c0
call CallAddress7
}



}
}

作者: zwb188cm188   发布时间: 2011-07-11

没仔细看代码,不过要调试很容易,在你想调的代码出加上
int 3
就行

作者: Areslee   发布时间: 2011-07-11