4.1程序破解
4.1程序破解
20135206 于佳心
?
基礎指令:
NOP:NOP指令即"空指令"。執行到NOP指令時,CPU什么也不做,僅僅當做一個指令執行過去并繼續執行NOP后面的一條指令。(機器碼:90)
JNE:條件轉移指令,如果不相等則跳轉。(機器碼:75)
JE:條件轉移指令,如果相等則跳轉。(機器碼:74)
JMP:無條件轉移指令。段內直接短轉Jmp short(機器碼:EB)段內直接近轉移Jmp near(機器碼:E9)段內間接轉移Jmp word(機器碼:FF)段間直接(遠)轉移Jmp far(機器碼:EA)
CMP:比較指令,功能相當于減法指令,只是對操作數之間運算比較,不保存結果。cmp指令執行后,將對標志寄存器產生影響。其他相關指令通過識別這些被影響的標志寄存器位來得知比較結果。
?
編寫一個簡單的程序11.c
使用objdump –d 11查看main:
在main函數的匯編代碼中可以看出程序在調用"scanf"函數請求輸入之后,對 [esp+0x1c] 和 [esp+0x18] 兩個內存單元的內容進行了比較,其作用應該是對比用戶輸入和預設口令。
jne是條件跳轉,如果條件滿足,則跳轉到8048486;
jne下兩行可知是輸出內容;
jmp是跳轉語句(沒有條件,則直接跳轉),直接跳到8048492;
jmp下兩行也是輸出內容。
jne表示當比較不相等時,跳轉。也就是說,當輸入與已存口令不相等時,跳轉到jmp下一行mov,如果比較結果相等,則執行jne下兩行mov、callq行,說明,執行mov、callq行輸出的為"right"。
下面完成三種轉換
使用vi編輯器進入11,
輸入:%!xxd
將0e改為00:
然后輸入:%!xxd –r
輸入:wq
使用objdump –d 11查看main
運行程序11.c
輸入錯誤密碼,顯示right
同理
將750e改成eb0e(eb為無條件跳轉)
運行程序
輸入正確密碼,顯示wrong
同理
將75改成74
運行程序
輸入錯誤密碼,顯示right
輸入正確密碼,顯示wrong
轉載于:https://www.cnblogs.com/javablack/p/5585159.html
總結
- 上一篇: tar打包和解压命令
- 下一篇: 原创:长平之战中,廉颇早就埋下了战败的种