20155218 Exp1 PC平臺逆向破解(5)M

20155218 Exp1 PC平臺逆向破解(5)M

1. 掌握NOP、JNE、JE、JMP、CMP彙編指令的機器碼

NOP:NOP指令即「空指令」。執行到NOP指令時,CPU什麼也不作,僅僅當作一個指令執行過去並繼續執行NOP後面的一條指令。(機器碼:90)shell

JNE:條件轉移指令,若是不相等則跳轉。(機器碼:75)ssh

JE:條件轉移指令,若是相等則跳轉。(機器碼:74)函數

JMP:無條件轉移指令。段內直接短轉Jmp short(機器碼:EB)段內直接近轉移Jmp near(機器碼:E9)段內間接轉移Jmp word(機器碼:FF)段間直接(遠)轉移Jmp far(機器碼:EA)3d

CMP:比較指令,功能至關於減法指令,只是對操做數之間運算比較,不保存結果。cmp指令執行後,將對標誌寄存器產生影響。其餘相關指令經過識別這些被影響的標誌寄存器位來得知比較結果。code

2.直接修改程序機器指令,改變程序執行流程

問題一:首先我不明白的一點是「8048491」再怎麼來的,爲什麼等於EIP + d7ffffff。
80484b5:    e8 d7 ff ff ff          call   8048491 <foo>
 80484ba:   b8 00 00 00 00          mov    $0x0,%eax
答:

8048491爲函數foo的地址。等於EIP + d7ffffff,則是由於call指令須要壓棧,再按照棧的特性,就不難理解;blog

實驗流程截圖:



3.構造輸入字符串

問題:0x和\x的區別:
答:
  1. 0x 表示整型數值 (十六進制),char c = 0x42; 表示的是一個數值(字母B對應的ASCII碼—— 66),能夠認爲等價於: int c = 0x42;進程

  2. \x42用於字符表達,或者字符串表達
    char c = '\x42'; 亦等價於: char c = 0x42;char* s = "\x41\x42"; //表示字符串:ABip

實驗流程:






4.注入Shellcode並執行

實驗過程:採用結構爲:anything+retaddr+nops+shellcode的攻擊方式;

實驗過程截圖:

  1. 查找進程號
  2. 查找shellcode的地址
  3. 實驗成功
相關文章
相關標籤/搜索