soul-sol/go-exec-format-doctor

GitHub: soul-sol/go-exec-format-doctor

一款纯 Go 实现的本地二进制文件诊断工具,通过解析文件头来检测目标架构与宿主环境的兼容性,帮助开发者快速定位跨平台编译中的 exec format error 问题。

Stars: 0 | Forks: 0

# go-exec-format-doctor [![Go Reference](https://pkg.go.dev/badge/github.com/soul-sol/go-exec-format-doctor.svg)](https://pkg.go.dev/github.com/soul-sol/go-exec-format-doctor) 无需运行文件即可诊断 `exec format error` 和二进制架构不匹配问题。 `go-exec-format-doctor` 读取本地文件头并报告: - ELF、Mach-O、通用 Mach-O 和 PE 的目标架构 - shebang 脚本及其请求的 interpreter - 无法直接执行的 ar 和 ZIP 归档文件 - 被截断或未知的文件头 - 当前主机的 OS 和架构 - 当二进制文件与主机不匹配时,提供特定的纯 Go 重建命令 它不会对受检查的文件执行、修改、上传操作,也不会发起网络请求。它不判断文件是安全还是恶意。 ## 安装 从 [GitHub Releases](https://github.com/soul-sol/go-exec-format-doctor/releases) 下载适合您平台的归档文件, 使用 `checksums.txt` 进行校验,然后将二进制文件放置在您的 `PATH` 中。 或者使用 Go 1.23 或更新版本从源码构建: ``` go install github.com/soul-sol/go-exec-format-doctor/cmd/go-exec-format-doctor@latest ``` 该模块和命令的文档已收录在 [pkg.go.dev](https://pkg.go.dev/github.com/soul-sol/go-exec-format-doctor)。 ## 使用 ``` go-exec-format-doctor ./my-service ``` 不匹配示例: ``` format: elf target: linux/amd64 host: linux/arm64 verdict: mismatch summary: elf binary targets linux/amd64 but this host is linux/arm64 next: GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build ``` 机器可读输出: ``` go-exec-format-doctor --json ./my-service ``` 隐藏可选的进一步帮助链接: ``` go-exec-format-doctor --quiet ./my-service ``` 退出代码: | 代码 | 含义 | |---:|---| | `0` | 兼容的二进制文件或有条件可运行的脚本 | | `1` | 架构/OS 不匹配、归档文件或未知格式 | | `2` | 无效的 CLI 输入、不可读的路径或输出失败 | ## 结论的含义 - `compatible`:文件头包含当前的 OS 和架构。 - `mismatch`:文件头针对其他的 OS 或架构。 - `conditional`:脚本包含 shebang,但未探测其 interpreter。 - `not-executable`:文件是归档容器。 - `unknown`:文件头被截断、损坏或无法识别。 文件头兼容并不代表在 runtime 下完全保证可用。动态库、 权限、挂载标志、内核特性、CGO 依赖以及 interpreter 的可用性 仍然可能阻止执行。 ## 进一步探索 如果您想防止 CI 中的架构不匹配问题, [售价 29 美元的 Go/Linux 跨架构 CI 入门套件](https://soul-sol.github.io/verified-automation-services/go-cross-architecture-ci-kit.html) 提供了经过测试的 AMD64、ARM64 和 386 工作流、编译报告以及可选的 QEMU 冒烟测试。免费的 doctor 仍然是完整的,并且不需要该套件。 ## 开发 ``` go test -race -shuffle=on -count=1 ./... go vet ./... golangci-lint run ./... ``` 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解范围和验证要求。 ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:EVTX分析, Go, Ruby工具, SOC Prime, 二进制分析, 云安全运维, 开发工具, 日志审计, 系统诊断, 跨平台编译