課上測試-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對於引數i,這個函式計算(float)i的位級表示。float_bitsfloat_i2f(inti);
測試你的函式,對引數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系列微控制器,筆者驚喜的發現這些晶元都由乙個共同廠家 南京沁恒。中美 戰筆者就不展開講述,戰對電子行業造成的影響不用筆者贅述,各位都心知...