Exp1 PC平臺逆向破解(5)M 20154307 馮彬
阿新 • • 發佈:2018-03-07
語言轉換 文件編輯 需要 輸入 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 馮彬