x86 反彙編/Linux
外觀
< X86 反彙編
X86 反彙編華夏公益教科書的 Linux 頁面是一個存根。您可以透過擴充套件此部分來提供幫助。
GNU/Linux 作業系統是開源的,但同時構成“GNU/Linux”的內容非常多,以至於很難掌握系統的所有方面。在這裡,我們將嘗試從反向工程師的角度總結一些 GNU/Linux 作業系統最重要的概念。
“GNU/Linux”的概念主要是一組基於 GNU 工具和 Linux 核心的大量軟體元件。GNU/Linux 本身又分為許多被稱為“發行版”的變體,這些變體之間有一些相似之處,但也可能存在明顯的差異。一般來說,所有 GNU/Linux 發行版都是基於 Linux 核心的某個變體。但是,由於每個使用者都可以隨意編輯和重新編譯自己的核心,而且由於一些發行版可能對其核心進行某些編輯,因此很難宣稱任何一個核心的任何一個版本是“標準”。Linux 核心通常基於這樣的理念:系統配置詳細資訊應該儲存在命名恰當、可讀(因此可由人類編輯)的配置檔案中。
Linux 核心實現了大部分核心 API,但當然不是全部。許多 API 程式碼儲存在外部模組中(儘管使用者可以選擇將所有這些模組編譯到一起形成一個“單片核心”)。
在核心之上通常執行一個或多個Shell。Bash 是更流行的 Shell 之一,但許多使用者更喜歡其他 Shell,尤其是用於不同的任務。
除了 Shell 之外,Linux 發行版通常還提供 GUI(儘管許多發行版根本沒有 GUI,通常是為了效能原因)。
由於每個 GUI 通常都提供自己的底層框架和 API,因此某些圖形應用程式可能只在一個 GUI 上執行。一些應用程式可能需要重新編譯(一些甚至需要完全重寫)才能在另一個 GUI 上執行。
以下是一些流行的 Shell
- Bash
- 是“Bourne Again SHell”的首字母縮寫。
- Bourne
- Bash 的前身。
- Csh
- C Shell
- Ksh
- Korn Shell
- TCsh
- 面向終端的 Csh。
- Zsh
- Z Shell
一些更流行的桌面環境
- GNOME
- GNU 網路物件建模環境
- KDE
- K 桌面環境
- strings
- 在檔案中查詢可列印的字串。例如,當密碼儲存在二進位制檔案本身中(在原始碼中靜態定義)時,可以從二進位制檔案中提取該字串,而無需執行它。 手冊頁
- file
- 確定檔案型別,對於確定可執行檔案是否已被剝離以及它是否已動態(或靜態)連結很有用。 手冊頁
- objdump
- 反彙編目標檔案、可執行檔案和庫。可以列出內部檔案結構並反彙編特定部分。支援 Intel 和 AT&T 語法
- nm
- 列出可執行檔案中的符號。不適用於剝離的二進位制檔案。主要用於可執行檔案的除錯版本。