計算機領域中的「Pwn」是什麼意思?
前言#
在觀看本系列文章時,建議至少有撰寫高階語言
的經驗,並且確保了解基礎的計算機概論
相關知識,尤其程式編譯
、組譯
的意思,以及知道何為執行檔 (Binary)
、記憶體
。並且除了特別注明之外,操作環境之系統為Ubuntu 20.04.5 LTS
。
「Pwn」是什麼?#
單字「Pwn
」源自「Own
(擁有)」這個詞,其主要含意為「在競爭環境中,對手完全慘敗,而自身處在完全勝利的情況下」。
而在計算機領域當中,又被稱作「Binary Exploitation
」,如字面上的意思,就是利用程式弱點達到目的,有著將目標拿下、獲得控制權等含意。
例如駭客駭入伺服器,並且獲得 root 權限,此刻的情境可以說是「該駭客 Pwn(ed) 了伺服器
」。
(p.s. 「Pwn
」有人念「碰
」,有人念「胖
」,阿我是都唸「胖」啦!)
Reverse Engineering (逆向工程)#
「Reverse Engineering
」又稱作「逆向工程
」,與Pwn
息息相關。
我們都知道,當我們所撰寫的高階程式語言(High-level programming language)
被編譯 (Compile)
成執行檔 (Executable)
後,無法再透過Binary
直接還原成高階語言
,但這些Binary code
是可以被解析成Assembly language (組合語言)
的。
因此透過分析組合語言,可以得知程式的的行為,並間接回推原本大致上的高階語言邏輯。
像是常見的遊戲外掛 (非腳本)
、破解軟體
等,基本上都與逆向工程相關。
正式開始,Start Learning Pwn!#
《Pwn - 0x01》Segments? Stack, Heap? .text, .data, .bss?References#
- 《Wiki - Pwn》https://zh.m.wikipedia.org/zh-tw/Pwn