跳轉到內容

x86 反彙編/Linux

來自華夏公益教科書,開放的書籍,開放的世界

X86 反彙編華夏公益教科書的 Linux 頁面是一個存根。您可以透過擴充套件此部分來提供幫助。

GNU/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 桌面環境

偵錯程式

[編輯 | 編輯原始碼]
gdb
GNU 偵錯程式。它在大多數 Linux 發行版中可用,主要用於除錯 ELF 可執行檔案。 手冊頁
winedbg
用於 Wine 的偵錯程式,用於在 Linux 下除錯 Windows 可執行檔案。 手冊頁
edb
一個功能齊全的基於外掛的偵錯程式,靈感來自著名的 OllyDbg專案頁面

檔案分析器

[編輯 | 編輯原始碼]
strings
在檔案中查詢可列印的字串。例如,當密碼儲存在二進位制檔案本身中(在原始碼中靜態定義)時,可以從二進位制檔案中提取該字串,而無需執行它。 手冊頁
file
確定檔案型別,對於確定可執行檔案是否已被剝離以及它是否已動態(或靜態)連結很有用。 手冊頁
objdump
反彙編目標檔案、可執行檔案和庫。可以列出內部檔案結構並反彙編特定部分。支援 Intel 和 AT&T 語法
nm
列出可執行檔案中的符號。不適用於剝離的二進位制檔案。主要用於可執行檔案的除錯版本。
華夏公益教科書