20135328-信息安全系統設計基礎第五週學習總結(程序的機器級表示)

第五週(10.05-10.11):
學習計時:共小時
讀書:
代碼:
做業:
博客:
1、學習目標安全

  1. 理解逆向的概念以及
  2. 掌握X86彙編基礎,可以閱讀(反)彙編代碼
  3. 瞭解ISA(指令集體系結構)
  4. 理解函數調用棧幀的概念,並能用GDB進行調試
    2、學習資源
  5. 教材:第三章《程序的機器級表示》,詳細學習指導見這:重點是3.7,3.11
  6. 課程資料:https://www.shiyanlou.com/courses/413 實驗四,課程邀請碼:W7FQKW4Y
  7. 教材中代碼運行、思考一下,讀代碼的學習方法見這。
    3、學習方法
  8. 進度很重要:必須跟上每週的進度,閱讀,練習,問答,項目。我會認真對待每一位同窗,請你不要由於困難半途而廢。
  9. 問答很重要:遇到知識難點請多多提問,這是你的權利更是您對本身負責的義務。問答到博客園討論小組:http://group.cnblogs.com/103791/
  10. 實踐很重要:解決書中習題,實踐書中實例,完成每週項目,纔算真的消化了這本好書。經過實驗樓環境或本身安裝的虛擬機在實踐中進行學習
  11. 實驗報告很重要:詳細記錄你完成項目任務的思路,得到老師點評和幫助本身複習。學習完成後在博客園中(http://www.cnblogs.com/)把學習過程經過博客發表,博客標題「學號-信息安全系統設計基礎第五週學習總結

4、學習任務函數

  1. 閱讀教材,完成課後練習(書中有參考答案)
    3.1-3.7中練習,重點:3.1,3.3,3.5,3.6,3.9,3.14,3.15,3.16,3.22,3.23,3.27,3.29,3.30,3.33,3.34
  2. 考覈:練習題把數據變換一下
  3. 實驗:須要動手的到實驗樓中練習一下
  4. 深化、實踐題目,額外加分

5、後續學習預告(可選):
第四章《處理器體系結構》
6、學習過程
(提示:此處由學生填寫,學習過程,學習筆記,代碼編譯,運行結果,思考等)
3.1歷史觀點oop

Intel處理器俗稱X86,經歷了長期的、不斷進化的發展過程。
8086—〉Core i7(處理器版本後向兼容)
3.2程序編碼
編譯代碼:gcc =O1 -o p p1.c p2.c
實際上gcc命令調用了一系列程序,將源代碼轉化成可執行代碼。學習

3.2.1機器級代碼編碼

指令集體系結構ISA:定義了處理器狀態、指令的格式,每條指令對狀態的影響。翻譯

3.3數據格式
char b-字節
short w-字
int l-雙字設計

數據傳送指令:
MOV S,D指針

movb 傳送字節
movw 傳送字
movl 傳送雙字
(上述gcc生成的彙編代碼指令都有一個字符後綴,代表操做數的大小)調試

3.5算術和邏輯操做
四種整數操做:code

加載有效地址:實際是將有效地址寫入目的操做數,目的操做數必須是寄存器。

一元操做:只有一個操做數,能夠是寄存器也但是存儲器位置。

  • INC 加1
  • DEC 減1
  • NEG 取負
  • NOT 取補
    二元操做:源操做數是第一個,能夠是當即數、寄存器、存儲器 目的操做數是第二個,能夠是寄存器、存儲器 兩個不能同時爲存儲器。
  • ADD 加
  • SUB 減
  • IMUL 乘
  • XOR 異或
  • OR 或
  • AND 與
    使用規則: 第二個操做數 操做符 第一個操做數
    移位:瞭解源操做數和目的操做數
  • SAL 左移
  • SHL 左移(等同於SAL)
  • SAR 算術右移
  • SHR 邏輯右移
    源操做數:移位量——當即數或CL
    目的操做數:要移位的數值——寄存器或存儲器

3.6控制
翻譯條件分支
將條件表達式和語句從c語言翻譯成機器語言,最經常使用的方式就是結合有條件和無條件跳轉。
do循環
do

body-statement

while(test-expr);

loop:

body-statement

    t = test-expr;

    if(t)

           goto loop;

while循環
while (test-expr)

body-statement

if(!test-expr)

goto done;

do

body-statement

           while(test-expr);

for循環
for(init-expr;test-expr;update-expr)
body-satament

翻譯條件分支
將條件表達式和語句從c語言翻譯成機器語言,最經常使用的方式就是結合有條件和無條件跳轉。

1.寄存器的使用
調用者——%eax、%edx、%ecx
被調用者——%ebx%esi%edi

寄存器%ebp-幀指針

寄存器%esp-棧指針
7、遇到的問題及解決
感受跟上個學期的彙編聯繫很大,但彙編沒學好.....如今看這個比較難過

8、其餘 (提示:此處由學生填寫,靈感,領悟等)

相關文章
相關標籤/搜索