工具
allyourbase 固件基址估算脚本
一个 Python 脚本,通过比较字符串地址与每个可能指针的目标地址来估算固件镜像的基址,支持任意指针长度和两种字节序。它不逐个尝试基址,而是在几个两两互素的模数下用 FFT 计算互相关来衡量重叠程度,再用中国剩余定理还原基址,因此也能处理 64 位地址空间。作者有意保持代码简短,方便分析者换用自己的启发式方法,例如把绝对调用的目标与返回指令之后的位置对应起来。
- 目标
- 固件
- 类别
- 固件工具
- 关联
- 基础工具
- 来源复核于
使用条件与局限
- 整个工具就是 allyourbase.py;所审阅的 main 分支 2025-03-07 提交只为 2023 年 4 月编写的代码添加了注释,没有发布版本、标签或软件包。需要 Python 3 及 NumPy(requirements.txt:numpy>=1)。
- 输入是使用者提供的原始镜像;仓库不含任何固件或样例。必须用 -l 指定以字节计的指针长度;-e 选择字节序(默认小端),-a 指定对齐(默认等于指针长度),-n 指定以码位计的最短字符串长度(默认 5),-f 是以速度和内存换取准确度的松弛系数。只统计以 NUL 结尾的 UTF-8 字符串。README 称内存占用随文件大小线性增长且常数因子较高,因此实际适用于几十 MB 的镜像。
- 它只输出一个最佳偏移(可能为负),或报告未找到;没有候选排序或置信度分数,README 将错误指针的偶然匹配视为噪声,可由松弛系数压低。README 唯一的示例针对 /usr/bin/ls,而非固件镜像。项目没有测试或 CI;本次审阅未扫描任何文件。
- 采用 MIT 许可证(2023 年,8051Enthusiast)。被分析的固件适用其自身条款。README 称其与 rbasefind 类似,但没有在相同镜像上进行比较。
关于此条目
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · 8051Enthusiast/allyourbase · 修订 78e98f7
- allyourbase.py GitHub · 8051Enthusiast/allyourbase · 修订 78e98f7
- requirements.txt GitHub · 8051Enthusiast/allyourbase · 修订 78e98f7
- LICENSE GitHub · 8051Enthusiast/allyourbase · 修订 78e98f7