工具

FLOSS 混淆字符串提取工具

Mandiant FLARE 团队的恶意软件字符串提取工具,用法与 strings.exe 相同,但还能还原混淆字符串。除了静态的 ASCII 和 UTF-16LE 字符串,它还能提取栈字符串、紧凑栈字符串(tight strings)以及由函数解码出的字符串:先用启发式方法识别解码函数,通过控制流分析取得调用参数,再模拟执行这些函数,并比较模拟前后的内存状态。它还能提取 Go 和 Rust 字符串,支持 PE、ELF 以及 32 位或 64 位原始 shellcode;JSON 结果可转换为 IDA Pro、Ghidra、Binary Ninja、radare2 和 x64dbg 的导入脚本。

使用条件与局限

  • 审阅时最新版本为 v3.2.0,发布于 2026-10-16,提供 Linux、macOS 和 Windows 独立可执行文件,并在 PyPI 上发布(需要 Python 3.10+);该版本新增基本的 ELF 支持,并把 Ghidra 导入脚本迁移到 PyGhidra。所审阅的 master 提交中有 857 个提交不在 v3.2.0 中,而 v3.2.0 也有 8 个提交不在 master 上:master 已合并 QUANTUMSTRAND 预览版,因此其 README 中介绍的带文件结构上下文和标签的布局感知静态字符串、HTML 报告和在线查看器,目前只随 quantumstrand 预发布版本提供(最新为 2026-04-22 的 quantumstrand-beta3)。master 要求 Python 3.12+,版本号仍为 3.1.1。
  • 解码采用静态模拟执行,并借助内置的 FLIRT 签名识别库函数;超过 64 MB 的文件会中止去混淆,除非指定 --large-file。shellcode 可通过 .sc32/.raw32/.sc64/.raw64 扩展名识别,或用 -f 指定。从源码克隆时需要 Git LFS 来获取标签数据库和签名文件;安装指南指出 Python API 在不同版本之间可能变化,稳定的接口是命令行。
  • 样本由分析人员自行提供。v3.2.0 修复了一个问题:在 v3.1.1 及更早版本和 QUANTUMSTRAND 预发布版本中,精心构造的 .viv vivisect 工作区文件(无论是样本本身还是样本旁的同名文件)可在分析时执行代码;现在只有设置 FLOSS_LOAD_VIV_WORKSPACE=1 时才会加载已保存的工作区。解码出的字符串只来自 FLOSS 识别为解码函数并成功模拟执行的例程。
  • 采用 Apache-2.0 许可。本次未安装,也未分析任何样本。

关于此条目

类型
工具
类别
原生分析工具
关联
基础工具
目标
二进制

来源复核于

说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。

一手来源

  1. README.md GitHub · mandiant/flare-floss · 修订 e100790
  2. doc/theory.md GitHub · mandiant/flare-floss · 修订 e100790
  3. doc/usage.md GitHub · mandiant/flare-floss · 修订 e100790
  4. doc/installation.md GitHub · mandiant/flare-floss · 修订 e100790
  5. doc/language_specific_strings.md GitHub · mandiant/flare-floss · 修订 e100790
  6. scripts/README.md GitHub · mandiant/flare-floss · 修订 e100790
  7. pyproject.toml GitHub · mandiant/flare-floss · 修订 e100790
  8. floss/version.py GitHub · mandiant/flare-floss · 修订 e100790
  9. LICENSE.txt GitHub · mandiant/flare-floss · 修订 e100790
  10. https://github.com/mandiant/flare-floss/releases/tag/v3.2.0
  11. https://github.com/mandiant/flare-floss/releases/tag/quantumstrand-beta3
  12. https://pypi.org/project/flare-floss/3.2.0/