上一篇我們介紹完關於逆向工程的基礎,這次我們將透過一個簡單的實作範例,讓大家進一步了解逆向工程的實際應用。我會先用python寫一個小程式,並對這個程式做反編譯。關於程式的內容及寫法我就不多著墨了,大家可以直接複製來進行實作。
這邊我寫了一個很簡單的檢查密碼程式:password.py
def main():
password = input("Enter password")
if password == "test":
print("yes")
else:
print("no")
input("press enter to close")
if _name_ == "_main_":
main()
因為我不是選擇使用已編譯完畢的程式,所以要先編譯成二進位執行檔。
python -m compileall password.py
編譯完成後,會出現一個 pycache 資料夾,並且裡面會有 .pyc 檔案,這就是我們要進行逆向分析的檔案。
使用uncompyle6 反編譯:(若無uncompyle6請先安裝:pip install uncompyle6)
uncompyle6 __pycache__/password.cpython-版本號.pyc > decompiled_password.py
將 版本號 替換成你編譯後的檔案名稱中的版本號(例如 311、312 等)。反編譯完成後,會在原先資料夾出現 decompiled_password.py 檔案,打開這個檔案即可查看原始程式碼及密碼。
1.Python 程式屬於高階語言,相比於匯編語言更加易於理解和操作。高階語言的設計初衷就是為了讓我們能夠更方便地撰寫程式,因此我們可以直接查看原始碼來進行分析,不需要把他轉換為匯編語言。
2. 匯編語言較為複雜,不適合初學者(包括我)
3. 我們的目的是了解逆向工程的基本概念和實際應用,而不一定要深入匯編語言的細節。
希望這三篇文章能幫助大家更好地理解逆向工程的基本概念,以及如何實際操作。接下來我們會回到其他駭客常使用到的攻擊手法、介紹,還有實作的部分。