1. 程式人生 > >Exp1 PC平臺逆向破解(5)M 20154307 馮彬

Exp1 PC平臺逆向破解(5)M 20154307 馮彬

語言轉換 文件編輯 需要 輸入 alt 組成原理 執行文件 程序 foo

Exp1 PC平臺逆向破解(5)M 20154307 馮彬

本次只是做了部分實驗,課上學習了手工修改可執行文件,改變程序執行流程,直接跳轉到getShell函數。

首先,我們先了解本次任務需要用到的代碼

1.反匯編,將匯編語言轉換成機器語言

  `objdump -d 文件名 | more`

2.vi命令,進入文件編輯界面

   vi 文件名

3.vi命令狀態下的進制轉換

①將當前文本轉化為16進制格式

   :%!xxd

②將當前文本轉化回文本格式

   :%!xxd -r

4.vi狀態下的查找

   /查找的內容

5.vi狀態下的存盤退出

   :wq

ok,了解這些以後,就可以開始了。首先我們用這個函數objdump -d 20154307 | more查看該文件的機器語言。

技術分享圖片

如上圖所示,主函數調用foo,查閱可知e8 d7 ff ff ff就是調用foo的指令

我們想讓它調用getShell

技術分享圖片

如上圖,可知foo和getshell的地址,然後通過計算偏移量,可得出將e8 d7 ff ff ff改為e8 c3 ff ff ff

進入該文件的vi編輯模式

技術分享圖片

按住esc,輸入:%!xxd指令,查看其十六進制格式,再按住esc,輸入/e8 d7,找到foo指令位置,修改為c3,即為getshell對應的指令

技術分享圖片

修改後

技術分享圖片

然後,用 :%!xxd -r轉回原格式,存盤退出

再用反匯編看其指令,如下圖

技術分享圖片

看,已經修改完了。

那麽,如此一來,實驗1的修改指令部分就已經完成了。

實驗問題

部分同學補碼可能已經忘記,在計算偏移量的時候可能會有些疑惑,需要課後復習之前學過的有關計算機組成原理等的知識。

Exp1 PC平臺逆向破解(5)M 20154307 馮彬