跳转到内容

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
列出可执行文件中的符号。不适用于剥离的二进制文件。主要用于可执行文件的调试版本。
华夏公益教科书