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