saadtahir-dev/swift-forensic-image-playbook

GitHub: saadtahir-dev/swift-forensic-image-playbook

一份在 macOS 上使用 Swift 构建取证磁盘映像工具的实战指南,解决 Apple Silicon 环境下的编译和集成挑战。

Stars: 0 | Forks: 0

# Swift 取证剧本 在 macOS 上使用 Swift 构建取证映像工具意味着要与 C/C++ 库、autoconf 构建系统、跨架构编译以及 SPM 互操作打交道——这些内容没有哪一处的文档是齐全的。这份剧本记录了完整的实际构建过程,包括遇到的每一个错误及其解决方法。 ## 这是什么 这是一份针对主要取证磁盘映像格式的逐步构建和打包指南集合,每份指南都可生成: - 一个通用静态库(arm64 + x86_64 fat binary) - 一个封装了 C 接口的 Swift 包(SPM) - 通过 `swift build` + `swift test` 验证 所有指南均基于 Apple Silicon macOS 上的实际构建过程编写。记录了所有失败、变通方法和修复措施。 ## 涵盖的格式 | 格式 | 库 | 状态 | |---|---|---| | [Raw / DD](./raw-dd/README.md) | Direct I/O + macFUSE | ✅ | | [E01 / Ex01 / S01 (EWF)](./ewf/README.md) | libewf | ✅ | | [AFF4](./aff4/README.md) | aff4-cpp-lite + Velocidex/c-aff4 | ✅ | | [DMG / SparseBundle](./dmg/README.md) | macOS 原生 (DiskArbitration) | ✅ | | [VMDK](./vmdk/README.md) | libvmdk | ✅ | | [VHD / VHDX](./vhd/README.md) | libvhdi | 🔜 | ## 适用人群 - 构建取证映像工具的 Swift/macOS 开发者 - 在 macOS 应用中集成取证格式支持的安全研究人员 - 任何花费数小时试图在 Apple Silicon 上静态构建 `libewf` 或 `libaff4` 的人 ## 环境 所有指南均假设: - Apple Silicon Mac(M 系列) - macOS 12.0+ 部署目标 - Xcode 15+ - 已安装 Homebrew 跨架构构建(arm64 + x86_64)贯穿始终,包括在 Apple Silicon 上必需的 pkg-config 隔离技术。 **路径约定:** 编译或复制产物的 Bash 片段以 `BUILD_ROOT="${HOME}/forensic-libs"`(目标文件、前缀、fat 库)和 `SPM_ROOT="${HOME}/forensic-spm"`(Swift 包检出)开头。在直接运行命令前,请根据您的机器情况覆盖这些变量。 ## 结构 ``` (your SPM_ROOT)/swift-forensic-playbook/ ├── raw-dd/ ← Raw/DD sector dump formats ├── ewf/ ← Expert Witness Format (E01/Ex01/S01) ├── aff4/ ← Advanced Forensics File Format 4 ├── dmg/ ← Apple DMG/SparseBundle (native) ├── vmdk/ ← VMware VMDK └── vhd/ ← Microsoft VHD/VHDX ``` ## 所有指南中的关键概念 **通用 fat binary** — 包含 arm64 和 x86_64 两个切片的单个 `.a` 文件,通过 `lipo -create` 创建。这是面向双架构的 SPM 包所必需的。 **pkg-config 隔离** — 在 Apple Silicon 上,Homebrew 仅安装 arm64 包。跨架构构建需要将 `PKG_CONFIG_PATH` 隔离到自定义构建的 x86_64 依赖树。在 AFF4 指南中有详细介绍。 **静态链接** — 所有库均使用 `--enable-static`(autoconf)或 `-DBUILD_SHARED_LIBS=OFF`(CMake)构建,以生成无运行时 dylib 依赖的自包含 SPM 包。 **module.modulemap** — C++ 库暴露一个 Swift 可调用的 C 接口(`extern "C"`)。`module.modulemap` 将 SPM 的模块系统限制为仅包含 C 兼容头文件,隐藏 C++ 内部实现。 **libyal 构建模式** — libyal 库(libewf、libvmdk、libvhdi 等)需要 `git clone`(而非 tarball)、`./synclibs.sh` 填充嵌入的依赖项,以及 `./autogen.sh` 生成构建系统。直接使用 `autoreconf -fi` 无效。 ## 贡献 如果您构建了此处未涵盖的取证格式库,欢迎提交 PR。请遵循现有指南结构——记录每一个错误和修复,而不仅仅是理想路径。 ## 许可证 MIT
标签:AFF4格式, Apple Silicon, autoconf, Bash脚本, C/C++集成, DMG格式, EWF格式, macOS开发, SPM互操作, Swift包管理, Swift编程, VMDK格式, 取证成像工具, 实际案例, 库封装, 教程指南, 数字取证, 构建系统, 磁盘镜像, 磁盘镜像分析, 自动化脚本, 跨架构编译, 通用二进制, 错误处理, 静态库