NEMU Add Debug

程序運(yùn)行錯(cuò)誤茅信,debug,順便再熟悉一樣x86匯編隅熙,要調(diào)試的代碼如下:


obj/testcase/add:     file format elf32-i386


Disassembly of section .text:

00100000 <_start>:
  100000:   bd 00 00 00 00          mov    $0x0,%ebp
  100005:   bc f0 ff ff 07          mov    $0x7fffff0,%esp
  10000a:   e8 1c 00 00 00          call   10002b <main>
  10000f:   b8 00 00 00 00          mov    $0x0,%eax
  100014:   d6                      (bad)  

00100015 <add>:
  100015:   55                      push   %ebp
  100016:   89 e5                   mov    %esp,%ebp
  100018:   83 ec 10                sub    $0x10,%esp
  10001b:   8b 55 08                mov    0x8(%ebp),%edx
  10001e:   8b 45 0c                mov    0xc(%ebp),%eax
  100021:   01 d0                   add    %edx,%eax
  100023:   89 45 fc                mov    %eax,-0x4(%ebp)
  100026:   8b 45 fc                mov    -0x4(%ebp),%eax
  100029:   c9                      leave  
  10002a:   c3                      ret    

0010002b <main>:
  10002b:   55                      push   %ebp
  10002c:   89 e5                   mov    %esp,%ebp
  10002e:   83 ec 10                sub    $0x10,%esp
  100031:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  100038:   c7 45 f0 00 00 00 00    movl   $0x0,-0x10(%ebp)
  10003f:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  100046:   eb 57                   jmp    10009f <main+0x74>
  100048:   c7 45 f8 00 00 00 00    movl   $0x0,-0x8(%ebp)
  10004f:   eb 42                   jmp    100093 <main+0x68>
  100051:   8b 45 f8                mov    -0x8(%ebp),%eax
  100054:   8b 14 85 20 01 10 00    mov    0x100120(,%eax,4),%edx
  10005b:   8b 45 fc                mov    -0x4(%ebp),%eax
  10005e:   8b 04 85 20 01 10 00    mov    0x100120(,%eax,4),%eax
  100065:   52                      push   %edx
  100066:   50                      push   %eax
  100067:   e8 a9 ff ff ff          call   100015 <add>
  10006c:   83 c4 08                add    $0x8,%esp
  10006f:   89 c1                   mov    %eax,%ecx
  100071:   8b 45 f4                mov    -0xc(%ebp),%eax
  100074:   8d 50 01                lea    0x1(%eax),%edx
  100077:   89 55 f4                mov    %edx,-0xc(%ebp)
  10007a:   8b 04 85 40 01 10 00    mov    0x100140(,%eax,4),%eax
  100081:   39 c1                   cmp    %eax,%ecx
  100083:   74 06                   je     10008b <main+0x60>
  100085:   b8 01 00 00 00          mov    $0x1,%eax
  10008a:   d6                      (bad)  
  10008b:   83 45 f0 01             addl   $0x1,-0x10(%ebp)
  10008f:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  100093:   8b 45 f8                mov    -0x8(%ebp),%eax
  100096:   83 f8 07                cmp    $0x7,%eax
  100099:   76 b6                   jbe    100051 <main+0x26>
  10009b:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  10009f:   8b 45 fc                mov    -0x4(%ebp),%eax
  1000a2:   83 f8 07                cmp    $0x7,%eax
  1000a5:   76 a1                   jbe    100048 <main+0x1d>
  1000a7:   83 7d f0 40             cmpl   $0x40,-0x10(%ebp)
  1000ab:   74 06                   je     1000b3 <main+0x88>
  1000ad:   b8 01 00 00 00          mov    $0x1,%eax
  1000b2:   d6                      (bad)  
  1000b3:   b8 00 00 00 00          mov    $0x0,%eax
  1000b8:   c9                      leave  
  1000b9:   c3                      ret    
  1. _start準(zhǔn)備運(yùn)行環(huán)境稽煤,ebp = 0, esp = 0x7fffff0, main的參數(shù)為空

  2. main函數(shù)的prologue,push ebp, esp = > ebp, esp -= 0x10

  3. 然后將局部變量初始化:囚戚,因?yàn)槁暶鞯捻樞驗(yàn)? i, j, ans_idx, loop, 所以i <==> ebp -4, j <==> ebp - 8, ans_idx <==> ebp - 0xc, loop <==> ebp - 0x10

  4. 然后開始外層循環(huán)酵熙,循環(huán)體的模式為:

    goto end_of_loop1;
start_of_loop1:
    j = 0;

    goto end_of_loop2;
start_of_loop2:
    processing here.....

end_of_loop2:
    eax = j;
    if (eax <= 7)
        goto start_of_loop2;

end_of_loop1:
    eax = i;
     if (eax <= 7)
        goto start_of_loop1;
  1. loop body的操作過程如下:
eax = j;
edx = [array + j * 4]
eax = i;
eax = [array + i * 4]

push edx    <==> param2
push eax    <==> param1

call add
  1. 其中有一條比較復(fù)雜的指令:
  100054:   8b 14 85 20 01 10 00    mov    0x100120(,%eax,4),%edx
表示:edx = (0x100120 + 0 + eax * 4)該地址的內(nèi)容

  1. x86棧幀的格式為
local var2                        <------- ebp - 8 (esp)
local var1                        <------- ebp - 4
(callee-saved registers)  maybe no need
old ebp                            <------- ebp
return address                <------- ebp + 4
param1                           <------- ebp + 8
param2
(caller-saved registers) maybe no need
  1. add函數(shù)的指令就比較容易懂了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市驰坊,隨后出現(xiàn)的幾起案子匾二,更是在濱河造成了極大的恐慌,老刑警劉巖拳芙,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件察藐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡舟扎,警方通過查閱死者的電腦和手機(jī)分飞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睹限,“玉大人譬猫,你說我怎么就攤上這事∠哿疲” “怎么了染服?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)叨恨。 經(jīng)常有香客問我柳刮,道長(zhǎng),這世上最難降的妖魔是什么痒钝? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任秉颗,我火速辦了婚禮,結(jié)果婚禮上午乓,老公的妹妹穿的比我還像新娘站宗。我一直安慰自己,他們只是感情好益愈,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布梢灭。 她就那樣靜靜地躺著夷家,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敏释。 梳的紋絲不亂的頭發(fā)上库快,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音钥顽,去河邊找鬼义屏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蜂大,可吹牛的內(nèi)容都是我干的闽铐。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼奶浦,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼兄墅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起澳叉,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤隙咸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后成洗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體五督,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年瓶殃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了充包。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡遥椿,死狀恐怖误证,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情修壕,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布遏考,位于F島的核電站慈鸠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏灌具。R本人自食惡果不足惜青团,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咖楣。 院中可真熱鬧督笆,春花似錦、人聲如沸诱贿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至料扰,卻和暖如春凭豪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晒杈。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工嫂伞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拯钻。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓帖努,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親粪般。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拼余,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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

  • IIS/6.0 MS-Author-Via: DAV 原POC: #------------Our payload...
    g0閱讀 1,366評(píng)論 0 2
  • 原文地址:C語言函數(shù)調(diào)用棧(一)C語言函數(shù)調(diào)用棧(二) 0 引言 程序的執(zhí)行過程可看作連續(xù)的函數(shù)調(diào)用。當(dāng)一個(gè)函數(shù)執(zhí)...
    小豬啊嗚閱讀 4,616評(píng)論 1 19
  • 到現(xiàn)在刊驴,我好像終于明白為什么當(dāng)初你說姿搜,“我會(huì)有很大改變”這句話了,逗你開心變成一件力不從心的事情 “你為什么不叫我...
    雀斑少女帶紅花閱讀 166評(píng)論 0 0
  • 土豆础拨、馬鈴薯氮块,到了云南成了我覺得洋氣的事物。 因?yàn)樵谀枪钭冢@叫做洋芋滔蝉,洋氣的洋。 也因?yàn)槲疫@個(gè)名字塔沃,我買了一碗佐料豐...
    遛海豬666閱讀 1,354評(píng)論 1 1
  • 機(jī)場(chǎng)蝠引,出發(fā)。 去年帶爺爺?shù)近S花機(jī)場(chǎng)看飛機(jī)蛀柴,都沒有看到螃概,所以,這一次鸽疾,各種拍拍拍吊洼。 一家人,真心有愛制肮。過得是秋天冒窍。 ...
    萌萌的大黃羊閱讀 91評(píng)論 0 0