日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

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

發(fā)布時(shí)間:2024/1/23 windows 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 湖南大学计算机系统原理实验,湖南大学-计算机组成原理实验-实验3-bomblab_图文.pdf... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

課程實(shí)驗(yàn)報(bào)告

課 程 名 稱(chēng): 計(jì)算機(jī)組成與結(jié)構(gòu)

實(shí)驗(yàn)項(xiàng)目名稱(chēng): bomblab

專(zhuān) 業(yè) 班 級(jí):

姓 名:

學(xué) 號(hào):

指 導(dǎo) 教 師:

完 成 時(shí) 間: 2016 年 4 月 20 日

信息科學(xué)與工程學(xué)院

實(shí)驗(yàn)題目:bomblab

實(shí)驗(yàn)?zāi)康?#xff1a;程序運(yùn)行在linux 環(huán)境中。程序運(yùn)行中有6 個(gè)關(guān)卡(6 個(gè)phase),每個(gè)phase

需要用戶(hù)在終端上輸入特定的字符或者數(shù)字才能通關(guān),否則會(huì)引爆炸彈!那么如何才

能知道輸入什么內(nèi)容呢?這需要你使用gdb 工具反匯編出匯編代碼,結(jié)合c 語(yǔ)言文件

找到每個(gè)關(guān)卡的入口函數(shù)。然后分析匯編代碼,找到在每個(gè)phase 程序段中,引導(dǎo)程

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

尋找應(yīng)該在命令行輸入何種字符通關(guān)。

實(shí)驗(yàn)環(huán)境:ubuntu14.04 虛擬機(jī)、gdb 工具

實(shí)驗(yàn)內(nèi)容及操作步驟:

首先打開(kāi)bomb.c 文件,發(fā)現(xiàn)這個(gè)文件里只有主函數(shù),沒(méi)有具體的代碼,所以我們

要通過(guò)反匯編得到6 關(guān)的具體代碼。

反匯編有兩個(gè)具體的方法:

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

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

對(duì)應(yīng)于本次實(shí)驗(yàn)中的六個(gè)函數(shù)phase_1~6,再將結(jié)果復(fù)制到word 中。

我采用第二種方法得到反匯編代碼,下面對(duì)六個(gè)bomb 進(jìn)行分析、得到我們拆炸彈

所需的密碼。

Phase_1 內(nèi)容如下

0x08048f61 : push %ebp

0x08048f62 : mov %esp,%ebp

0x08048f64 : sub $0x18,%esp 這里對(duì)esp-24

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

值存入esp+4 中

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

一個(gè)參數(shù),放到eax 寄存器中

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

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

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

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

考慮一個(gè)函數(shù)的返回值要存在eax 中,則以下的eax 已經(jīng)發(fā)生改變,是判斷字符

串是否相等的結(jié)果

0x08048f7a : test %eax,%eax

0x08048f7c : je 0x8048f83

0x08048f7e : call 0x80490d1

以上三句,如果eax 不為0,則引爆炸彈,如果eax 為0,則跳轉(zhuǎn)到leave 語(yǔ)句函

數(shù)結(jié)束。說(shuō)明eax 為0 時(shí),可以進(jìn)入下一關(guān)

0x08048f83 : leave

0x08048f84 : ret

解題過(guò)程:

本題的棧幀結(jié)構(gòu)如下:

根據(jù)以上分析,我們發(fā)現(xiàn),從鍵盤(pán)輸入一個(gè)值,放到 (新)ebp+8 中,接著函數(shù)

進(jìn)行調(diào)用,把他傳到esp 中,接著,函數(shù)再?gòu)?0x804a15c 這個(gè)地址取值,放到esp+8

中,接著,程序?qū)@兩個(gè)參數(shù)進(jìn)行函數(shù)調(diào)用,調(diào)用判斷字符串是否相等的程序string

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

相等,則炸彈爆炸。

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

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。