以下代碼寫在DLL的一個對話框的按鍵上,上面的都為全局變量,用作call的參數和地址.
為什么它的執行順序是如下(注釋部分).如果我想從頭到尾一次一次的執行,我該怎么辦?這個問題
我試了好久了,在几個知名的論壇也發了貼,不知道是因為太簡單不想回答,還是我寫得不清楚,至今
我沒有找到答案,郁悶了好几天了.每天在網上找,就是找不到答案啊,謝謝大家
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*)0xBFDFB8;
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;
CString str;
str.Format("%d",FUBBID);
MessageBox(str); 1)先執行這里,然后跳到2.再121212十次做完,
__asm{ 3)再從這里下去到底,執行十次所有的ASM的代碼
PUSH 0
PUSH ZHUBBID
MOV ECX,0X008CA4C0
CALL CallAddress6
}
__asm{
PUSH 0
PUSH FUBBID
MOV ECX,0X008CA4C0
CALL CallAddress6
}
__asm{
push 0
push FUBBID
push ZHUBBID
mov ecx,0x008ca4c0
call CallAddress5
}
DWORD Base4=*(DWORD*)(0x008cbee8); 2這里,再跳回1
Base4=*(DWORD*)(Base4+0x10);
Base4=*(DWORD*)(Base4+0X4*(a+1));
Base4=Base4+0x4;
DWORD *wupingid1=(DWORD*)Base4;
TEQIUID=*wupingid1;
MessageBox("222222222222");
__asm{
push 1
push 1
push TEQIUID
push ZHUBBID
mov ecx,0x008ca4c0
call CallAddress7
}
}
[课程]Linux pwn 探索篇!