20145336張子揚 《信息安全系統設計基礎》第5周學習總結

20145336張子揚 《信息安全系統設計基礎》第5周學習總結(一)

教材學習內容總結

學習目標

  • 理解逆向的概念
  • 掌握X86彙編基礎,可以閱讀(反)彙編代碼
  • 瞭解ISA(指令集體系結構)
  • 理解函數調用棧幀的概念,並能用GDB進行調試git

學習內容

  • ISA:定義了處理器狀態,指令的格式,每條指令對狀態的影響。vim

      gcc -O1 -S text.c
  • 使用gcc產生一個彙編文件code.s,可使用vim查看安全

  • gcc -O1 -c text.c
  • 使用gcc產生目標代碼文件。從中可知及其實際執行的程序只是對一系列指令進行編碼的字節序列。函數

  • objdump -d test.o
  • 查看目標代碼文件的內容,將他們轉換成一種相似與彙編代碼的格式。

  • 64位機器上想要的到32代碼:gcc -m32 -S text.c
  • 二進制文件可使用od命令查看,或者使用gdb的x命令
  • 不一樣數據的彙編代碼的數據學習

    字節          b           1
    字            w           2
    雙字/雙精度    l           4/8
    單精度         s           4
    拓展精度       t           10/12
  • %eax,%ebx,%ecx,%edx,經常使用的寄存器,用來存儲整數數據和指針,佔32位,%ax16位,%ah、%al各佔8位。
  • 棧指針%esp,幀指針%ebp
  • 大多數指令有一個或者多個操做數,指出執行下一個操做中要引用的源數據值,以及放置結果的目標位置。操做數分爲三種:第一種當即術,即爲常數值;第二種寄存器,,表示寄存器中的內容;第三種存儲器,一般根據有效地址訪問某個存儲位置。(p113表格)
  • %esp是棧指針,一般指向棧頂,棧頂在底部,地址不斷增大,指向位於頂部的棧底
  • pushl指令的功能是把數據要入到棧頂,popl是彈出數據(p115詳解)

操做數三種類型編碼

  • 當即數($加一個數表示整數當即數)
  • 寄存器(表示寄存器裏存在的內容)
  • 存儲器

movl類設計

  • movb傳送字節
  • movw傳送字
  • molv傳送雙字

add類3d

  • addb字節加法
  • addw字加法
  • addl雙字加法

這些操做被分爲四組:加載有效地址、一元操做、二元操做和移位指針

leal指令調試

若%eax存儲x,leal 7(%edx,%edx,4) 是將%eax的值設置委5x+7

  • 一元操做:只有一個操做數,既是源又是目的
  • 二元操做:第二個操做數既是源又是目的
  • 移位操做:先給位移量,而後給出惟一的數值,可進行算數和邏輯右移

jump指令能夠改變一組機器代碼指令的執行順序。

條件碼寄存器:描述了最近的算數或邏輯操做的屬性

  • CZ:進位標誌
  • ZF:零標誌
  • SF:符號標誌
  • OF:溢出標誌

過程

一個過程調用包括將數據和控制從代碼的一部分傳遞到另外一部分。另外,它還必須在進入時爲過程的局部變量分配空間,並在退出時釋放這些空間。

I32程序用程序棧來支持過程調用

機器用棧來傳遞過程參數,存儲返回信息,保存寄存器用於之後恢復,以及本地存儲。

call

call指令有一個目標,即指明被調用過程起始的指令地址,調用能夠是直接的也能夠是間接的

call指令效果是將返回地址入棧,並跳轉到被調用過程的起始處。

ret

ret指令從棧中彈出地址,並跳轉到這個位置。棧指針要指向前面call指令所存儲返回地址的位置。

寄存器%eax、%edx和%ecx被劃分委調用者保存寄存器(P調用Q時,Q能夠覆蓋這些寄存器,而不會破壞P所需的任何數據

寄存器%ebx、%esi和%edi被劃分委調用者保存寄存器(Q必須在覆蓋這些寄存器的值以前將他們保存在棧中)

教材學習中的問題和解決過程

本週解決了git推送代碼的問題,而且成功將代碼推送至開源中國。

一開始不知道什麼緣由,不能push,再我不斷嘗試後終於成功了

本週代碼託管截圖

心得體會

      本週學習了深刻理解計算機系統第3章的知識,本章學習的內容主要是學習計算機的彙編語言。認識計算機如何將c語言程序轉換爲彙編語言,而後再將彙編語言轉換爲機器語言。在學習本章時仍是以爲學習進程很緩慢,有時在一個知識點須要停留好久才能搞懂,之後還得多加練習,勤能補拙。

學習進度條

  代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時  
第二週 0/0 1/2 19/20  
第三週 80/80 1/3 25/44  
第四周 110/190 1/4 23/67  
第五週 60/250 2/6 26/93
相關文章
相關標籤/搜索