匯編:call和jmp

1. jmp 和 jmpq

通常我們會(huì)看到很多類似的:
mov 對(duì)應(yīng)的有 movl咱士、movq;
call 對(duì)應(yīng)的有 callq序厉;
jum 對(duì)應(yīng)的有 jmpq;

這里多出來的一個(gè)字符表示是什么弛房?匯編代碼指令有一個(gè)字符的后綴,表明指令后面操作數(shù)的大小荷逞,如圖:

image.png

2. call和jmp

call 一般用于調(diào)用子程序粹排,ret 返回到 call 的下一行种远;

jmp 一般用于程序控制恨搓,jmp 之后的指令如果跟了 ret,那就直接退出到上一個(gè) call 對(duì)應(yīng)指令的下一行斧抱;

3. 舉例

main 函數(shù)下調(diào)用。

情況一:

// foo
mov edi,1000
call myfunction
add eax,7
ret

myfunction:
mov eax,edi  ; copy our first parameter into eax (to be returned)
ret  ; go back to foo

情況二:

mov edi,1000
jmp myfunction
add eax,7 ; <- never executed!
ret

myfunction:
mov eax,edi  ; copy our first parameter into eax (to be returned)
ret  ; go back to main

總結(jié):

  1. call 應(yīng)該是有個(gè)寄存器之類的地方保留了上次之前命令的位置弄抬,而 jmp 沒有宪郊。
  2. call 影響代碼執(zhí)行流程,而 jmp 不影響弛槐,即 jmp 本身就是流程中的一部分。所以上訴例子乎串,jmp未影響代碼執(zhí)行流程,ret 才會(huì)直接從 foo 退出到 main 函數(shù)鸯两;

4. 樁函數(shù)的例子

樁函數(shù)的調(diào)用:

image.png

打個(gè)斷點(diǎn):

(lldb) breakpoint set -a 0x7fff201932ac
Breakpoint 7: where = libobjc.A.dylib`symbol stub for: issetugid, address = 0x00007fff201932ac

進(jìn)入到樁函數(shù):

image.png

這里調(diào)用樁函數(shù)使用的是 call长豁,而樁函數(shù)內(nèi)部,取出了 __la_symbol_ptr / __got 中指針存儲(chǔ)的值之后匠襟,使用的是 jmp 進(jìn)行跳轉(zhuǎn)该园。因此机错,再遇到下一個(gè) ret 時(shí),會(huì)直接返回到 call 的下一行弱匪;

如果 call 換成 jmp 就亂了~~~

即:

  • call 用來調(diào)用子程序璧亮,如函數(shù)。jmp 用來執(zhí)行指令的跳轉(zhuǎn)枝嘶;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市及刻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缴饭,老刑警劉巖骆莹,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幕垦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)先改,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門仇奶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來貌嫡,“玉大人猜嘱,你說我怎么就攤上這事±柿妫” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵益楼,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我感凤,道長(zhǎng),這世上最難降的妖魔是什么陪竿? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮闰挡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘长酗。我一直安慰自己桐绒,他們只是感情好夺脾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布茉继。 她就那樣靜靜地躺著,像睡著了一般馒疹。 火紅的嫁衣襯著肌膚如雪佳簸。 梳的紋絲不亂的頭發(fā)上颖变,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音腥刹,去河邊找鬼。 笑死佩脊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的威彰。 我是一名探鬼主播穴肘,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼评抚!你這毒婦竟也來了伯复?” 一聲冷哼從身側(cè)響起邢笙,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎氮惯,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體妇汗,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了唬滑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡擒悬,死狀恐怖稻艰,靈堂內(nèi)的尸體忽然破棺而出懂牧,到底是詐尸還是另有隱情尊勿,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布元扔,位于F島的核電站,受9級(jí)特大地震影響澎语,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尸变,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一减俏、第九天 我趴在偏房一處隱蔽的房頂上張望召烂。 院中可真熱鬧垄懂,春花似錦痛垛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹂析。三九已至碟婆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間竖共,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工借帘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人肺然。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓腿准,卻偏偏與公主長(zhǎng)得像际起,于是被迫代替她去往敵國(guó)和親吐葱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容