工具
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 的使用,本收录未运行任何程序。
关于此条目
- 类型
- 工具
- 类别
- 原生分析工具
- 关联
- 基础工具
- 目标
- 二进制
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- FindCrypt.java GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- findcrypt_ghidra/last_chlog.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- Utils/FCExporter/README.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- LICENSE GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- Licenses/Crypto++.txt GitHub · d3v1l401/FindCrypt-Ghidra · 修订 71660fd
- https://github.com/d3v1l401/FindCrypt-Ghidra/releases/tag/1.5