Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/pfalcon/scratchabit
静态分析逆向工程调试器二进制分析
GitHubpfalcon/scratchabit

ScratchABit

易于重定向且可定制的交互式反汇编器,支持与IDAPython兼容的插件API

查看仓库
4134845年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

ScratchABit

ScratchABit 是一个交互式增量反汇编器,具备数据流/控制流分析功能。ScratchABit 致力于支持开源逆向工程社区的努力(即通过逆向工程为未得到厂商适当支持的硬件生成开源驱动/固件,以实现硬件与软件的互操作性,并用于安全研究)。

ScratchABit 支持社区中广为人知的 IDAPython API,用于编写反汇编/扩展模块。

ScratchABit 仍在开发中,功能按需添加,欢迎贡献。

ScratchABit 根据 GNU 通用公共许可证 v3 (GPLv3) 的条款发布。

需求/宣言

  1. 不应使用晦涩难懂的语言编写。这些语言包括过于底层、允许访问未初始化变量、不区分变量与函数/过程、数组索引从任意数字开始等。ScratchABit 使用 Python 编写(现代版本,Python3),以提升您的使用体验和代码可维护性。

  2. 用户界面框架应提供必要级别的用户交互,避免增加依赖、臃肿、问题以及框架版本间的不兼容性。ScratchABit 目前使用基于 ANSI/VT100 终端转义序列的简单全屏文本用户界面(是的,甚至 curses 库也被认为过于臃肿而不强加给用户)。

  3. 应利用易于使用的文本格式来存储"数据库",便于复用、工具编写以及存储在版本控制系统中。

安装

要使用 ScratchABit,你需要安装 Python3(已在 Python 3.3 至 3.7 版本上测试),并拥有 VT100(最低要求)或 XTerm(推荐)终端或终端模拟器(任何 Unix 系统都应兼容,如 Linux/BSD 等,详见下面的 FAQ)。

克隆代码:

root@kitploit:~
git clone --recursive https://github.com/pfalcon/ScratchABit

如果你没有使用 --recursive 克隆代码,请在 ScratchABit 目录中运行 git submodule update --init。

ScratchABit 现在内置了基于 Capstone Engine 的 CPU 插件,可访问多种 CPU 架构。要使用它,需要安装最新的 Capstone Python 绑定模块(优先于操作系统发行版通常过时的软件包)。最简单的安装方式是安装到 Python 用户包目录:

root@kitploit:~
pip3 install --no-cache-dir --user capstone

另一种选择是安装到 ScratchABit 目录内的 Python 虚拟环境中:

root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
pip3 install --no-cache-dir capstone

每当打开新的终端会话使用 ScratchABit 时,再次运行 source .venv/bin/activate 命令以激活虚拟环境。

如果上述方法均无效,可以尝试系统范围安装 capstone 包(不推荐):

root@kitploit:~
sudo pip3 install --system capstone

快速开始

如果你想反汇编一个自描述可执行格式(如 ELF)的文件,直接将其作为参数传递给 ScratchABit.py。仓库中包含多个针对不同架构的 example-*.elf 文件供快速入门。例如,尝试 x86 32 位版本:

root@kitploit:~
python3 ScratchABit.py example-x86_32.elf

或者,如果你想反汇编一个原始二进制文件,则需要创建一个 .def(定义)文件,以指定代码的内存区域、二进制文件的加载地址等。(注意:.def 文件也可能对 .elf 等文件有用。)仓库中包含一个简单的 x86_64 原始二进制代码,以及相应的 example-x86_64.def 文件(查看内部以了解可用选项的描述):

root@kitploit:~
python3 ScratchABit.py example-x86_64.def

按 F9 访问菜单(在 XTerm 兼容终端中鼠标也可用)。按 F1 获取有关按键绑定的帮助(大多数操作也可通过菜单访问)。ScratchABit 的工作流程与其他交互式反汇编器类似(可能需要一些先前经验或背景阅读)。

使用插件

IDAPython 处理器插件可以从 Python 模块路径的任何位置加载。或者,你可以将插件 .py 文件符号链接或复制到 plugins/cpu/ 子目录中。

插件可用后,基于 example-x86_64.def 创建一个新的定义文件,在 cpu xxx 行设置插件模块名称(不含 .py 扩展名)。

一个使用外部插件的简单示例,参见此 esp8266.def 文件,该文件与 ida-xtensa2 仓库 中的 xtensa.py 插件配合使用。

待办/待定事项

  • 目前使用多个文件作为"数据库",每个文件存储特定类型的信息。改为使用单个 YAML 文件?
  • 添加颜色(低优先级,欢迎(不臃肿的!)补丁)。
  • 还有一些重要的 UI 命令需要实现才能舒适地工作。 (所有最重要的命令应该已存在,其他功能预计通过插件实现)。
  • 退出时如果数据库已修改则提供保存选项。
  • Git 集成用于数据库保存。
  • 提高健壮性(在主循环级别添加异常处理程序,不终止应用程序,向用户显示/记录并继续)。
  • 尝试处理代码流不一致问题(例如指令内部——对于预期用途优先级较低)和数据访问不一致问题(例如访问先前检测到的字的单个字节——优先级较高)。(已在 1.4 中改进。)
  • 研究如何支持除处理器模块之外的其他类型的 IDAPython 插件。
  • 解析并使用 ELF(等)文件中的调试信息(例如 DWARF)。

常见问题

问:支持哪些处理器/架构?

答:ScratchABit 本身不支持任何处理器架构,它完全可以通过 IDAPython API 插件重新定向。许多插件可用,编写新插件很容易。为了让用户试用 ScratchABit,发行版中包含了一个使用 Pymsasid 反汇编器的简单 x86 处理器插件。

从 2.0 版本开始,还包含了 Capstone 插件,可访问多种架构,包括 x86、ARM、MIPS、PowerPC、SPARC 等(架构支持基于用户测试逐步启用)。

你可以查看 README for plugins/cpu/ dir 了解与 ScratchABit 一起发布的插件。

问:调试器?

答:ScratchABit 致力于静态分析和轻松支持新的 CPU 架构(只需编写一个新的 CPU 插件——几个小时内即可获得初步结果)。动态分析并非核心功能,目前没有立即实现的计划。不过欢迎提交补丁。

问:反编译器?

答:有一个相关项目,名为 ScratchABlock,用于深度程序分析、转换和反编译。预计随着 ScratchABlock 的成熟,其部分功能将通过插件在 ScratchABit 中可用。

问:我不用 Linux,如何运行 ScratchABit?

答:在你的系统上安装一个模拟器/虚拟机中的 Linux,然后尽情享受吧。

问:必须要有截图?

答:当然:

screenshot

下载工具