工具
FA(Firmware Analysis)符号定位自动化工具
一个主要以 IDA 插件形式使用的 Python 框架,把定位符号时的手工步骤(例如查找字符串、跟随交叉引用、跳到函数起始处)写成可复用的签名。Hjson 格式的 SIG 文件按平台归入不同项目,其中串联的命令可搜索字节、字符串、立即数或用 Keystone 汇编出的指令,按操作数和交叉引用筛选,再设置名称、类型、常量、枚举和结构体成员;也可用 Python 脚本调用同一解释器。在 IDA 中,它添加 FA 菜单和工具栏,用于查找项目的全部符号、根据当前函数生成临时签名草稿,以及导出符号和 C 头文件;另有一个加载器可在不使用 IDA 的情况下对原始 ELF 文件运行签名。
使用条件与局限
- 审阅时最新版本为 v1.0.11,发布于 2026-03-25,未附带任何文件;该标签指向所审阅的 master 提交,PyPI 上也有同版本的 fa 1.0.11。README 的安装方式是克隆仓库后运行 pip install -e,并说明代码库高度面向 IDA,对 Ghidra、radare2 等其他反汇编器的支持仅在未来考虑之列。
- README 称支持 IDA 8.0+,2026 年 3 月的一次提交为 make-offset 加入了 IDA 9.0 支持。软件包要求 Python 3.8+;keystone-engine、capstone、hjson、rpyc 等依赖需安装到 IDA 自带的 Python 中。IDA 也可在脚本模式下运行该插件并写出符号文件;ELF 加载器脚本则需要 pyelftools,而它只列在测试依赖中。
- 二进制文件、IDA 数据库和签名均由分析者自行提供:仓库在 fa/signatures 下只附带两个小型测试项目,没有面向真实固件的签名集。README 将签名按项目划分,部分目的在于降低误报;ELF 加载器遇到多处匹配的符号时会如实报告,而不会替用户选定其一。
- CI 使用 flake8 做静态检查,并在 Python 3.8 至 3.12 上运行 pytest;测试在模拟内存段上检查 find-bytes,并在测试时用 Keystone 和 simpleelf 生成的小型 ARM ELF 上检查 ELF 符号搜索,均不运行 IDA。许可证文本为 GPL-3.0,pyproject.toml 的分类标注为 GPLv3 或更高版本。本次未安装或运行任何内容。
关于此条目
- 类型
- 工具
- 类别
- 原生分析工具
- 关联
- 基础工具
- 目标
- 二进制 · 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · doronz88/fa · 修订 b584a37
- commands.md GitHub · doronz88/fa · 修订 b584a37
- fa/ida_plugin.py GitHub · doronz88/fa · 修订 b584a37
- elf_loader.py GitHub · doronz88/fa · 修订 b584a37
- pyproject.toml GitHub · doronz88/fa · 修订 b584a37
- requirements.txt GitHub · doronz88/fa · 修订 b584a37
- requirements_testing.txt GitHub · doronz88/fa · 修订 b584a37
- fa/signatures GitHub · doronz88/fa · 修订 b584a37
- tests/conftest.py GitHub · doronz88/fa · 修订 b584a37
- .github/workflows/python-app.yml GitHub · doronz88/fa · 修订 b584a37
- LICENSE GitHub · doronz88/fa · 修订 b584a37
- https://github.com/doronz88/fa/commit/bc88577a0af4e9a91bcfcae4d88bbf9c012fe646
- https://github.com/doronz88/fa/releases/tag/v1.0.11
- https://pypi.org/project/fa/1.0.11/