20155338 ch02 ch03課下作業

2022-05-07 07:27:11 字數 2914 閱讀 2533

課上測試-3-ch02

1、編寫乙個程式 「week0603學號.c",執行下面**:

(1) short int v = -學號後四位

(2) unsigned short uv = (unsigned short) v

(3) printf("v = %d, uv = %u\n ", v, uv);

2、在第三行設定斷點用gdb除錯,用p /x v; p /x uv檢視變數的值,提交除錯結果截圖,要全屏,要包含自己的學號資訊

3、分析p /x v; p /x uv 與程式執行結果的不同和聯絡

課上編寫完**,在gdb除錯中輸入了題目要求的命令,但動作比較慢,沒來得及提交上,課後下來上網查了查p/x v 和 p/x uv 之間的聯絡,也算get到乙個知識點。

p/x v和 p/x uv之間的聯絡在於有符號數和無符號數之間的轉換,其數值可能會變,但位模式不會變

課上測試-5-ch03

1、通過輸入gcc -s -o main.s main.c將下面c程式編譯成彙編**

2、參考 部落格使用gdb跟蹤彙編**,在紙上畫出f中每一條語句引起的eip(rip),ebp(rbp),esp(rsb),eax(rax)的值和棧的變化情況。提交**,要有學號資訊。

使用disassemble命令獲取彙編**,info registers檢視暫存器的值。根據參考部落格,ret命令將棧頂彈給%eip,在執行下一條彙編語句之前,設定:display /i $pc,此命令在每次程式中斷後可以看到即將被執行的下一條彙編指令 ,/i表示以十六進製制顯示,$pc表示當前彙編命令,si執行一條彙編指令。將其變化記錄即可。

1、輸入命令安裝一些用於編譯32位c程式的東西:

一般情況下,緩衝區溢位會造成程式崩潰,在程式中,溢位的資料覆蓋了返回位址。而如果覆蓋返回位址的資料是另乙個位址,那麼程式就會跳轉到該位址,如果該位址存放的是一段精心設計的**用於實現其功能,輸入shellcode.c

漏洞程式stack.c

程式會讀取乙個名為「badfile」的檔案,並將檔案內容裝入「buffer」。

攻擊程式exploit.c

處需要添上shellcode儲存在記憶體中的位址,因為發生溢位後這個位置剛好可以覆蓋返回位址。

strcpy(buffer+100,shellcode); 這一句又告訴我們,shellcode儲存在 buffer+100 的位置。

現在我們要得到shellcode在記憶體中的位址,需要gdb測試:

然後編譯exploit.c程式:gcc -m32 -o exploit exploit.c

但不知道為什麼我試了好幾次,有出現段錯誤,然後又進行gdb測試,但後來一直出現「非法命令」,這點還未弄明白,後面我也會請教一下老師同學。

2.96

題目:遵循位級浮點編碼規則,實現如下原型的函式:

int float_f2i(float_bits f);

對於浮點數f,這個函式計算(int)f。如果f是nan,你的函式乙個向零捨入。如果f不能用整數表示(例如,超出表示範圍,或者他是乙個nan),那麼函式一應該返回0x80000000.測試你的函式,對引數f可以取得所有2^32個值求值,將結果與你使用的機器的浮點運算得到的結果相比較。

遇到的問題:

對『pow』未定義的引用;導致編譯不出來

解決過程:

使用math.h中宣告的庫函式還有一點特殊之處,gcc命令列必須加-lm選項,因為數學函式位於libm.so庫檔案中(這些庫檔案通常位於/lib目錄下),-lm選項告訴編譯器,我們程式中用到的數學函式要到這個庫檔案裡找。

知道後加上-lm,編譯成功了

**託管

2.97

遵循位級浮點編碼規則,實現具有如下原型的函式:

compute (float) i

float_bitsfloat_i2f(inti);

對於引數i,這個函式計算(float)i的位級表示。

測試你的函式,對引數f可以取的所有2^32個值求值,將結果與你使用機器的浮點運算得到的結果相比較。

**託管

進行編譯:

執行結果:

CH02 提供推薦

目標輸出 我想得到乙個長串,裡面既有與這個人評分較高 即相似度較高 的人的名字,也有他的得分,應該用python裡的什麼結構?q 乙個列表也好,乙個字典也好,不定義可以直接用嗎?a 不可以。乙個字元在不定義的時候可以直接用 for item in 並沒有定義item,直接拿來用就好 item可以是數...

程式設計珠璣ch02

1.給定乙個包含32位整數的順序檔案,它至多只能包含40億個這樣的整數,並且整數的次序是隨機的。請查詢乙個此檔案中不存在的32位整數。在有足夠主存的情況下,你會如何解決這個問題?如果你可以使用若干外部臨時檔案但可用主存卻只有上百位元組,你會如何解決這個問題呢?情形一 32位整數,從0到23 2 1 ...

CH579M開發筆記02 CH579M晶元介紹

時至今日,筆者已經在電子開發行業工作了8年,從最初接觸的ch340g這款usb轉串列埠晶元,繼而進行乙太網開發使用到的w5500 直到最近的價效比較高的ch579m系列微控制器,筆者驚喜的發現這些晶元都由乙個共同廠家 南京沁恒。中美 戰筆者就不展開講述,戰對電子行業造成的影響不用筆者贅述,各位都心知...