日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf...

發布時間:2024/1/23 85 豆豆
生活随笔 收集整理的這篇文章主要介紹了 湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

課程實驗報告

課 程 名 稱: 計算機組成與結構

實驗項目名稱: bomblab

專 業 班 級:

姓 名:

學 號:

指 導 教 師:

完 成 時 間: 2016 年 4 月 20 日

信息科學與工程學院

實驗題目:bomblab

實驗目的:程序運行在linux 環境中。程序運行中有6 個關卡(6 個phase),每個phase

需要用戶在終端上輸入特定的字符或者數字才能通關,否則會引爆炸彈!那么如何才

能知道輸入什么內容呢?這需要你使用gdb 工具反匯編出匯編代碼,結合c 語言文件

找到每個關卡的入口函數。然后分析匯編代碼,找到在每個phase 程序段中,引導程

序跳轉到“explode_bomb”程序段的地方,并分析其成功跳轉的條件,以此為突破口

尋找應該在命令行輸入何種字符通關。

實驗環境:ubuntu14.04 虛擬機、gdb 工具

實驗內容及操作步驟:

首先打開bomb.c 文件,發現這個文件里只有主函數,沒有具體的代碼,所以我們

要通過反匯編得到6 關的具體代碼。

反匯編有兩個具體的方法:

第一種:objdump -d bomb > 1.txt 將反匯編結果輸出到1.txt 中

第二種:使用gdb 調試bomb,命令為(gdb)disas func_name,其中func_name

對應于本次實驗中的六個函數phase_1~6,再將結果復制到word 中。

我采用第二種方法得到反匯編代碼,下面對六個bomb 進行分析、得到我們拆炸彈

所需的密碼。

Phase_1 內容如下

0x08048f61 : push %ebp

0x08048f62 : mov %esp,%ebp

0x08048f64 : sub $0x18,%esp 這里對esp-24

0x08048f67 : movl $0x804a15c,0x4(%esp) 這是將$0x804a15c 處的

值存入esp+4 中

0x08048f6f : mov 0x8(%ebp),%eax ebp+8 就是從調用函數處取出第

一個參數,放到eax 寄存器中

0x08048f72 : mov %eax,(%esp) 將eax 的值傳給esp

0x08048f75 : call 0x8048fab 此處是入口函

數的地址0x8048fab,該函數要調用的參數為esp+4(即$0x804a15c 處的值),和ebp+8

(即我們輸入的值)該函數的作用是 :判斷字符串是否相等

考慮一個函數的返回值要存在eax 中,則以下的eax 已經發生改變,是判斷字符

串是否相等的結果

0x08048f7a : test %eax,%eax

0x08048f7c : je 0x8048f83

0x08048f7e : call 0x80490d1

以上三句,如果eax 不為0,則引爆炸彈,如果eax 為0,則跳轉到leave 語句函

數結束。說明eax 為0 時,可以進入下一關

0x08048f83 : leave

0x08048f84 : ret

解題過程:

本題的棧幀結構如下:

根據以上分析,我們發現,從鍵盤輸入一個值,放到 (新)ebp+8 中,接著函數

進行調用,把他傳到esp 中,接著,函數再從$0x804a15c 這個地址取值,放到esp+8

中,接著,程序對這兩個參數進行函數調用,調用判斷字符串是否相等的程序string

not equal 進行判斷,如果二者相等,則返回值為0,不引爆炸彈,反之,只要二者不

相等,則炸彈爆炸。

分析結論:此處的密碼存在地址$0x804a15c 中,我們只要查看該地址

總結

以上是生活随笔為你收集整理的湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。