工具

FindCrypt Ghidra 版密码常量识别脚本

移植自 Ilfak Guilfanov 为 IDA 编写的 FindCrypt 插件的 Ghidra 脚本,在程序内存或当前选区中查找密码算法与压缩算法的常量。其序列化签名库保留了原插件的 79 组算法常量,按 README 的统计共含 122 个可检测常量,涵盖哈希函数、分组密码与流密码、Curve25519 代码、Keccak 和 zlib;若找不到完整常量,脚本还会查找其中的单个元素,并报告超过检测阈值的部分匹配。命中结果会生成 Ghidra 书签和结果表,可从表中将匹配位置定义为数据。

使用条件与局限

  • README 称作者已无法维护,项目已停止开发,并推荐 TorgoTorgo/ghidra-findcrypt 等分支。所审阅的 master 提交日期为 2021-03-18;最后一个版本 1.5 发布于 2020-04-17,附带 FindCrypt.java 和 database.d3v,脚本与签名库的版本号均为 7。未注明支持哪些 Ghidra 版本,安装示例路径中写的是 Ghidra 9.0。
  • 需要手动安装:将 FindCrypt.java 复制到 Ghidra 的 Features/BytePatterns/ghidra_scripts 目录,将 findcrypt_ghidra 签名库文件夹复制到用户主目录,然后对已在 Ghidra 中载入的程序,从脚本管理器运行该脚本。无界面运行时会直接打印结果,而不打开结果表。
  • 默认情况下,每次运行都会连接 raw.githubusercontent.com,将脚本和签名库版本与本仓库比较,并把更新的 database.d3v 下载到主目录下的文件夹中;README 说明可通过脚本中的 __FORCE_NO_DBUPDATE 和 __FORCE_NO_SCRIPTUPDATE 标志关闭此功能。
  • 检测方式是按字节搜索已知常量,因此命中结果只标出候选位置,并不能确认程序确实使用了某种算法;不含常量表的代码无法被发现。新增签名需使用 Utils 中的 FCExporter Visual Studio 项目构建,该项目依赖 Crypto++ 进行压缩。
  • 采用 GPL-3.0 许可,并为导出工具附带 Crypto++ 许可声明。README 致谢 Ilfak Guilfanov 的原始插件,签名库更新说明则注明当前格式由贡献者 Pawlos 开发。所审来源未提及 REA 的使用,本收录未运行任何程序。

关于此条目

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

来源复核于

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

报告条目过时 建议修正翻译

一手来源

  1. README.md GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  2. FindCrypt.java GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  3. findcrypt_ghidra/last_chlog.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  4. Utils/FCExporter/README.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  5. LICENSE GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  6. Licenses/Crypto++.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
  7. https://github.com/d3v1l401/FindCrypt-Ghidra/releases/tag/1.5

同分区更多条目:原生二进制

原生二进制分区全部 113 项资源