工具
FujiHack:Fujifilm 相机固件逆向研究项目
以逆向 Fujifilm 相机为目标的研究代码库,使自定义代码能够在打过补丁的固件下于相机上运行。其中包括 ARM 固件补丁,最主要的是为 PTP/USB 增加内存读、写和执行命令的调试器补丁;一个通过 USB 上传代码并转储内存的主机命令行工具;以及记录 Fujifilm RTOS API 的 C 头文件,附各机型的固件地址和函数桩。相机端代码在该 RTOS 之上提供 POSIX、图形和 I/O 封装,并包含解除录像时长限制的修改、按键重映射,以及名为 Frontier 的界面与模块系统。
使用条件与局限
- 所审阅的 master 提交日期为 2024-08-17。仓库的两个 GitHub 发布版本都不含文件:2022-10-27 的调试器版本 0.1.0 已标为弃用,改推独立的 fffw 项目;2023 年面向 X-A2 的 DOOM 移植演示版本 0.2.0 已标为不再支持。README 称 FujiHack 只能在打过补丁的固件下运行,自定义固件始终存在风险并可能损坏相机,而借助 SoC 启动 ROM 恢复变砖设备的方法尚未逆向出来。README 报告调试器补丁已移植到 XF1 和 X-A2;附固件地址的机型头文件涵盖十款相机,从 Z3、HS20EXR 到 X-T4。
- 仓库不包含任何 Fujifilm 固件、转储或密钥:机型头文件引用的是厂商自己的固件下载地址,打补丁则在独立的浏览器端补丁工具中完成,README 称它可对使用者选择的固件 DAT 文件进行解包、注入、打补丁、重新打包和降级。etc/ 中的辅助程序(包括一个 Unicorn 仿真脚本)读取使用者从自己相机中获取的固件或内存转储;本条目不转述任何打补丁或安装步骤。
- 相机端代码按机型使用 arm-none-eabi-gcc 构建,少量 Rust 文件另需 rustc,命令为 make hack.bin model=<model>。主机端 fuji 命令行工具需要 libusb-1.0 和 camlib PTP 库子模块,其 Windows 构建会下载作者的 libwpd DLL。曾编译 X-A2 目标的工作流位于已停用的 .github/workflows_ 目录中,因此没有运行中的 CI,也没有测试。本合集仅审阅源码与文档,未进行任何构建,也未连接相机。
- LICENSE 与 README 标明采用 GPL-3.0,版权归 Daniel C 及贡献者(2021–2024);usb/dbg.c 带有另一位贡献者的版权声明,camlib 子模块有其自身许可。README 将这项工作定位为互操作性研究;Fujifilm 的固件和商标仍归厂商所有。所审来源未确立与 REA 的关联。
关于此条目
- 类型
- 工具
- 类别
- 固件工具
- 关联
- 基础工具
- 目标
- 固件
来源复核于
说明已依据一手来源复核;这不代表已运行验证、经过安全审计或确认兼容。
一手来源
- README.md GitHub · fujihack/fujihack · 修订 754acff
- Makefile GitHub · fujihack/fujihack · 修订 754acff
- src/Makefile GitHub · fujihack/fujihack · 修订 754acff
- usb/Makefile GitHub · fujihack/fujihack · 修订 754acff
- usb/main.c GitHub · fujihack/fujihack · 修订 754acff
- src/patch/debug.S GitHub · fujihack/fujihack · 修订 754acff
- model GitHub · fujihack/fujihack · 修订 754acff
- model/xf1_101.h GitHub · fujihack/fujihack · 修订 754acff
- etc/NOTES.md GitHub · fujihack/fujihack · 修订 754acff
- etc/unicorn/main.py GitHub · fujihack/fujihack · 修订 754acff
- .github/workflows_/makefile.yml GitHub · fujihack/fujihack · 修订 754acff
- .gitmodules GitHub · fujihack/fujihack · 修订 754acff
- LICENSE GitHub · fujihack/fujihack · 修订 754acff
- https://github.com/fujihack/fujihack/releases/tag/0.2.0
- https://github.com/fujihack/fujihack/releases/tag/0.1.0