linux實踐之程序破解

linux實踐之程序破解linux

此次的實踐是文件破解,讓咱們從login可執行文件開始吧!函數

首先咱們執行一下這個可執行程序spa

 

①咱們但願在不知道密碼的狀況下,可以登錄進去。且不管密碼是什麼,都是提示「on your commandmy master」。blog

首先對該程序執行反彙編。ast

 

咱們首先要找到main函數的入口處。搜索

 

咱們能夠看到cmp語句後,有jmp語句,若是不等於就跳轉到「0x8048466」處,這是正常程序執行的過程,咱們在這裏但願不等於的時候,也不要跳轉,因此能夠把「75 0e」修改成「75 00」表示,不用跳轉。這樣這句跳轉語句至關於不存在了,由於不管比較的結果是否相等,都將按順序繼續執行。二進制

先來看看正確登錄是什麼樣子的。程序

首先打開login文件,結果如圖所示,command

 

輸入「:%!xxd」,結果如圖所示。密碼

 

搜索「75 0e」,輸入「/75 0e」,結果如圖所示。

 

修改該值爲「75 00」,輸入「:%Xxd -r」保存修改。

退回到二進制文件格式後,輸入「:wq」保存。

從新執行該可執行文件,結果如圖所示。

 

②咱們但願不管輸入什麼,跳過提示。直接結束。

分析main函數的反彙編。

 

咱們只須要將cmp比較後的jne判斷語句,直接跳轉到leave處。即將「75 00」修改成「75 1a」,這樣在輸錯密碼的狀況下會直接結束,退出程序。在「75 00」處增長代碼,增長代碼爲「jmp 8048472」,即增長「eb 0c」。總結:就是將「75 00」修改成「75 1a eb 0c」。

讓咱們來嘗試一下是否可以成功吧!

 

 

可是失敗了,顯示爲段錯誤。

這是我想從新反彙編該可執行文件,結果爲

 

因爲個人修改,致使文件不可用,也沒法復原回原來的版本,因此我又只好從新開始新的代碼,進行嘗試。

因而我只好從新修改,我此次不增長新的代碼,直接將「75 0e」修改成「75 1a」。

修改後的執行結果以下。

 

修改後從新反彙編一下,查看結果。

 

③深刻研究,試圖猜想密碼。

 

從上圖的main代碼中,咱們能夠看到,比較的是「0x1c%esp)」和「%eax」的值,而看上一步「%eax」的值是「0x18%esp)」,往上面找,我猜想,這裏比較的就是「0x7fe」和「0x0」,這樣一來,結果永遠是不等於,因此我嘗試修改,將下面的「00 00」改成「fe 07」。

 

修改後保存。

 

修改後,輸入任何密碼,都是成功登錄。

 

 

就是這樣,搞定啦!

相關文章
相關標籤/搜索