Call指令主要實(shí)現(xiàn)對(duì)一個(gè)函數(shù)的調(diào)用帚称。Jmp指令主要實(shí)現(xiàn)地址的調(diào)轉(zhuǎn)担神。
Call指令和Jmp指令的區(qū)別
1:Call指令和Jmp指令的機(jī)器碼不同酷宵。
2:Call指令會(huì)對(duì)當(dāng)前指令的下一條指令的地址進(jìn)行壓棧操作溜族,來實(shí)現(xiàn)函數(shù)的返回厕倍。
相當(dāng)于
Push eip+5
Jmp xxxxxxxx
Call指令的二進(jìn)制形態(tài)(機(jī)器碼)
1:X86
Call --- e8/ ff15(但是其他比如 call eax 等是不相同的)
E8 xxxxxxxx 其中xxxxxxxx是偏移地址
計(jì)算方法:目標(biāo)地址-當(dāng)前地址-5 = 偏移地址
Ff15 xxxxxxxx 其中xxxxxxxx是絕對(duì)地址(FF15會(huì)對(duì)當(dāng)前的這個(gè)絕對(duì)地址解*號(hào)组民,也就是絕對(duì)地址[目標(biāo)地址])
Jmp ---e9 /ff25
E9 xxxxxxxx其中xxxxxxxx是偏移地址
計(jì)算方法:目標(biāo)地址-當(dāng)前地址-5 = 偏移地址
Ff25 xxxxxxxx其中xxxxxxxx是絕對(duì)地址(FF15會(huì)對(duì)當(dāng)前的這個(gè)絕對(duì)地址解*號(hào)耸三,也就是絕對(duì)地址[目標(biāo)地址])
2:X64
E8 xxxxxxxx 其中xxxxxxxx是偏移地址
計(jì)算方法:目標(biāo)地址-當(dāng)前地址-5 = 偏移地址
Ff15 xxxxxxxx 其中xxxxxxxx是相對(duì)地址(FF15會(huì)對(duì)當(dāng)前的這個(gè)相對(duì)地址解*號(hào),也就是相對(duì)地址[目標(biāo)地址])
Ff25 xxxxxxxx其中xxxxxxxx是相對(duì)地址(FF15會(huì)對(duì)當(dāng)前的這個(gè)相對(duì)地址解*號(hào),也就是相對(duì)地址[目標(biāo)地址])