Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
tamago — 用于在裸机处理器上编译和执行Go应用程序的框架,通过移除操作系统和C依赖来缩小攻击面,实现安全的固件开发。 | Kitploit
工具/GitHubGitHub/usbarmory/tamago
嵌入式系统安全安全虚拟化硬件安全固件分析
GitHubusbarmory/tamago

tamago

用于在裸机处理器上编译和执行Go应用程序的框架,通过移除操作系统和C依赖来缩小攻击面,实现安全的固件开发。

查看仓库
2.0k837天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

TamaGo - 裸机 Go

tamago | https://github.com/usbarmory/tamago

版权所有 (c) The TamaGo Authors。保留所有权利。

TamaGo gopher

介绍

TamaGo 是一个框架,能够在裸机处理器(AMD64、ARM、ARM64、RISCV64)上编译和执行不受限制的 Go 应用程序。

该项目源于减少嵌入式系统固件攻击面的愿望,通过移除对 C 代码和操作系统的运行时依赖。

TamaGo 框架由以下组件组成:

  • 一个修改过的 Go 发行版, 将 GOOS 支持扩展到 tamago 目标,通过 GOOSPKG 设置的 runtime/goos 覆盖层实现裸机执行。

  • 用于处理器/SoC 支持的 Go 包。

  • 用于板级支持的 Go 包。

这些修改相对于原始 Go 编译器、运行时和目标应用程序(需要一个导入)来说是最小的,并且与其他架构保持清晰分离。

重点强调复用标准 Go 运行时中已包含的现有架构,参见 内部机制。

这些修改保持了完整的标准库支持。

这些方面的动机是提供一个能够在嵌入式系统上开发安全 Go 固件的框架。

当前发布版本

以下链接是 TamaGo 修改版 Go 发行版 和 TamaGo 库 的最新版本:

GitHub release Build Status
GitHub release

文档

Go Reference

主要文档可在项目维基找到。

包 API 文档可在 pkg.go.dev 找到。

支持的 AMD64 目标

下表总结了当前支持的 x86-64 目标(GOOS=tamago GOARCH=amd64)。

支持的 ARM 目标

下表总结了当前支持的 ARM SoC 和开发板(GOOS=tamago GOARCH=arm)。

支持的 ARM64 目标

下表总结了当前支持的 ARM64 SoC 和开发板(GOOS=tamago GOARCH=arm64)。

支持的 RISC-V 目标

下表总结了当前支持的 RISC-V SoC 和开发板(GOOS=tamago GOARCH=riscv64)。

用户空间目标

使用 GOOS=tamago 编译的程序也可以在用户空间中执行,只需导入实现了所需 runtime/goos 覆盖层的包,而不是裸机驱动,由操作系统监管。

在用户空间中以 GOOS=tamago 编译和运行 Go 程序的好处在于系统调用隔离,因为可执行文件无法利用 Go 运行时直接访问操作系统资源,这带来了:

  • 与操作系统文件系统的隔离,通过内存模拟磁盘
  • 与操作系统网络的隔离,参见 net.SocketFunc
  • 用于自定义网络、随机数生成、时间处理器的 API

下表总结了当前可用的用户空间支持:

¹ 用于运行标准发行版测试和 go test -tags user_linux

编译

支持 GOOS=tamago 的 Go 发行版

tamago 命令下载、编译并运行来自 TamaGo 发行版中与应用程序 go.mod 中 tamago 模块版本匹配的 go 命令。

应用程序可以将 github.com/usbarmory/tamago 添加到 go.mod,然后将 go 命令替换为:

root@kitploit:~
go run github.com/usbarmory/tamago/cmd/tamago

或者将以下行添加到 go.mod 以使用 go tool tamago 作为 go 命令:

root@kitploit:~
tool github.com/usbarmory/tamago/cmd/tamago

或者也可以手动构建最新的 TamaGo 发行版或使用最新的二进制发布:

root@kitploit:~
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go

构建应用程序

编译时,必须设置 GOOSPKG Go 环境变量以启用此库作为支持 GOOS=tamago 的覆盖层。

root@kitploit:~
export GOOSPKG=github.com/usbarmory/tamago

Go 应用程序需要导入相关的开发板包,以确保硬件初始化和运行时支持:

root@kitploit:~
import (
	// USB armory Mk II 示例
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)

Go 应用程序可以使用上一步构建的编译器进行编译,并添加一些标志/变量:

root@kitploit:~
# 将此库设置为 `runtime/goos` 覆盖层
export GOOSPKG=github.com/usbarmory/tamago

# Cloud Hypervisor、QEMU 和 Firecracker KVM 示例
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

# NXP i.MX6UL 示例
GOOS=tamago GOARM=7 GOARCH=arm ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# NXP 8MPLUSLPD4-EVK 示例
GOOS=tamago GOARCH=arm64 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# SiFive FU540 示例
GOOS=tamago GOARCH=riscv64 ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# AI Foundry Erbium 示例
GOOS=tamago GOARCH=riscv64 GOSOFT=1 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Linux 用户空间示例
GOOS=tamago ${TAMAGO} build main.go

请参阅各自开发板包的 README 文件以获取每个特定目标的编译信息。

构建标签

以下构建标签允许应用程序覆盖包自身的 runtime/goos 覆盖层定义:

  • linkramstart: 覆盖 ramStart
  • linkramsize: 覆盖 ramSize
  • linkprintk: 覆盖 printk
  • linkcpuinit: 覆盖 cpuinit
  • tiny: 减少堆分配需求

执行和调试

请参阅各自开发板包的 README 文件以获取每个特定目标(真实或仿真)的执行和调试信息。

示例应用程序提供了示例驱动使用以及原生和仿真执行的说明。

可以按以下方式启动示例应用程序的仿真运行:

root@kitploit:~
git clone https://github.com/usbarmory/tamago-example
cd tamago-example && make qemu

使用 TamaGo 的应用程序

  • go-boot - 裸机 Go UEFI 启动管理器
  • GoKey - 裸机 Go 智能卡
  • GoTEE - Go 可信执行环境
  • ArmoredWitness - 跨生态系统见证网络
  • armory-drive - USB 加密驱动器
  • armory-ums - USB 大容量存储固件
  • armory-boot - USB armory 引导加载程序
  • tamago-example - TamaGo 示例应用程序
  • tamago-sev-example - 机密虚拟机(AMD SEV-SNP)示例
  • kotama - 微型 RISC-V 目标演示器
  • kanzashi - 裸机代理

使用 TamaGo 的外部驱动

  • go-net - 通用网络驱动
  • go-net/imx-usb - i.MX 以太网 over USB 驱动
  • go-net/virtio - VirtIO 网络驱动
  • imx-usbserial - i.MX 串行 over USB 驱动

其他资源

  • 包 API
  • 运行时 API
  • 兼容性
  • 内部机制
  • 常见问题
  • 演讲:TamaGo, ArmoredWitness

维护者

Andrea Barisani
[email protected]

Andrej Rosano
[email protected]

许可证

tamago | https://github.com/usbarmory/tamago
版权所有 (c) The TamaGo Authors。保留所有权利。

本项目基于 LICENSE 文件中的 BSD 风格许可证分发。

TamaGo 标志改编自 Renee French 设计的 Go gopher,根据 Creative Commons 3.0 Attributions 许可授权。Go Gopher 矢量插画由 Hugo Arganda 制作。

下载工具
CPU平台CPU 包平台包
AMD/Intel 64位Cloud Hypervisoramd64cloud_hypervisor/vm
AMD/Intel 64位Firecracker microvmamd64firecracker/microvm
AMD/Intel 64位QEMU microvmamd64qemu/microvm
AMD/Intel 64位UEFIamd64uefi/x64
AMD/Intel 64位Google Compute Engineamd64google/gcp, uefi/x64
SoC开发板SoC 包开发板包
NXP i.MX6ULZ/i.MX6ULUSB armory Mk IIimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULUSB armory Mk II LANimx6ulusbarmory/mk2
NXP i.MX6ULL/i.MX6ULZMCIMX6ULL-EVKimx6ulmx6ullevk
Broadcom BCM2835Raspberry Pi Zerobcm2835pi/pizero
Broadcom BCM2835Raspberry Pi 1 Model A+bcm2835pi/pi1
Broadcom BCM2835Raspberry Pi 1 Model B+bcm2835pi/pi1
Broadcom BCM2836Raspberry Pi 2 Model Bbcm2835pi/pi2
Nuvoton NUC980NuMaker-IIoT-NUC980G2nuc980nuc980iiot
SoC开发板SoC 包开发板包
NXP i.MX8M Plus8MPLUSLPD4-EVKimx8mpimx8mpevk
Microchip LAN969xEVB-LAN9696-24portlan969xlan9696evb
SoC开发板SoC 包开发板包
SiFive FU540QEMU sifive_ufu540qemu/sifive_u
AI Foundry Erbiumerbium_emuerbiumerbium_emu
AI Foundry ET-SoC-1sys_emuetsoc1sys_emu
操作系统GOARCH运行时包
Linuxamd64,arm,arm64,riscv64runtime/goos¹
Linuxamd64,arm,arm64,riscv64linux
GoTEEarm,riscv64applet