新聞中心
函數(shù)調(diào)用順序?yàn)椋篕ERNEL32!7c817077-mainCRTStartup-main
通常情況下,在調(diào)試程序的時(shí)候,往往會(huì)斷在mainCRTStartuo這里。
- mainCRTStartup和wmainCRTStartup是控制臺(tái)環(huán)境下多字節(jié)編碼和Unicode編碼的啟動(dòng)函數(shù)
- 而WinMainCRTStartup和wWinMainCRTStartup是windows環(huán)境下多字節(jié)編碼和Unicode編碼的啟動(dòng)函數(shù)
mainCRTStartup:
main函數(shù)一共有三個(gè)參數(shù),完整main函數(shù)如下:
int main(int argc,char *argv[],char *envp[]){}
這里的argv和envp對(duì)應(yīng)mainCRTStartup里_setargv()和_setenvp()
無需關(guān)注三個(gè)參數(shù)具體細(xì)節(jié),只需記住main函數(shù)具有三個(gè)參數(shù)。
打開程序
一步步往下看,直到
在進(jìn)行call跳轉(zhuǎn)函數(shù)前向堆棧壓入了三個(gè)參數(shù),雖說push個(gè)數(shù)不一定代表參數(shù)個(gè)數(shù),但通過這一方法可以過濾不少信息。從函數(shù)跳轉(zhuǎn)出來下一步就是add esp,0c;這是典型的堆棧外平衡,可以推測使用的是cdel。上面dword表示壓入的數(shù)據(jù)是4個(gè)字節(jié),平衡時(shí)采用0C,C/4=3,即參數(shù)個(gè)數(shù)。
代碼:
步入call的函數(shù):
發(fā)現(xiàn)出現(xiàn)0x160,并且發(fā)現(xiàn)將DS:[406030]賦值給EAX,并將EAX與160相加,最后又將EAX賦值回DS:[406030],可以推測406030是全局變量global的全局變量地址。
重新打開程序,尋找406030地址
發(fā)現(xiàn)在執(zhí)行main函數(shù)前已經(jīng)賦值,可以看見是小端序。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁名稱:尋找C程序main入口、全局變量、局部變量-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/cseojc.html