thyrn90/tartarus-hobby-os

GitHub: thyrn90/tartarus-hobby-os

一个实验性的无 hypervisor 的 Ring-0 裸机操作系统,用于底层硬件研究和 PE 可执行文件在裸机环境下的动态加载、执行与逆向分析。

Stars: 0 | Forks: 0

# Tartarus **严重警告:请勿在物理硬件(裸机)上运行** *注意:本项目目前正处于积极开发阶段。* 这是一个实验性的、运行于 Ring-0 的业余操作系统,从零开始构建,旨在用于底层硬件研究和逆向工程。它会直接操纵物理内存、PCI 总线和 CPU 寄存器,且没有任何安全保护机制。在物理硬件上运行此系统可能会导致严重的系统不稳定、永久性数据丢失或硬件损坏。 **务必仅在 QEMU 或类似虚拟机中运行。** ## 概念 Tartarus 不是面向消费者的操作系统,也不是商业沙盒。它是一个定制的、无 hypervisor 的内核,完全在 Ring-0 下运行。通过剥离现代操作系统的抽象层,它提供了一个裸机环境,可以直接在 CPU 上执行、操纵和分析复杂的可执行文件(PE / 原始二进制文件)。 ## 核心架构 完全使用 C 和 x86_64 汇编写成。在初始引导序列之后,内核会自行管理硬件接口,而无需依赖外部库或 UEFI 运行时服务。 * **中断处理:** 针对硬件异常(#GP、#PF、#DB)的自定义汇编包装器,采用了极简的 GDT/IDT 设置。 * **内存管理:** 解析 UEFI 内存映射,并使用支持块分割与合并的自定义动态堆分配器。 * **硬件枚举:** 直接扫描 PCI/PCIe 总线以及读取 ATA 驱动器的原始扇区。 * **原生文件系统:** 内置 FAT32 解析器,可直接从磁盘提取并执行二进制文件。 ## 子系统 Tartarus 包含特定的机制,旨在 Ring-0 真空环境中操纵外部加载的程序。 ### 动态 PE 执行引擎 Tartarus 不依赖静态入口点。它将 PE 节动态映射到虚拟内存中,扫描 MSVC 和 GCC (MinGW-w64) 编译器签名,并绕过标准的 CRT 样板代码,将执行流精准定位在原始的 `main()` 函数处。 ### 缺页拦截与 IAT Hook 目标可执行文件经常会查询缺失的 API 或尝试写入受限内存。Tartarus 不会崩溃,而是拦截缺页(#PF)并 hook 导入地址表(IAT)。 * **自定义 PEB/LDR 链:** 构建一个循环双向链接的虚假 PEB/LDR 链,用于注入合成的 `ntdll.dll` 和 `KERNEL32.DLL` 模块。 * **动态 Trampoline:** 为拦截到的 API 调用即时编译 x86_64 汇编 trampoline。 * **Amnesia Stub:** 一片专用的物理内存区域 (0x06000000),填充了 `xor rax, rax; ret` 指令。当目标可执行文件尝试访问未授权或缺失的函数时,Tartarus 会将指令指针(RIP)重定向至此,为程序输入“失忆”数据,从而维持执行流继续运行。 ### 硬件级调试器 利用 x86_64 调试寄存器(DR0-DR7)和自定义的向量 1 (ISR1) 处理程序来实现 Trap Flag(单步)执行。它包含一个内置的陷阱机制,可捕获硬件监控点,并将实时 CPU 寄存器状态(RAX、RBX、RCX 等)直接输出到 framebuffer。 ## 从源码构建 **编译器警告:** 你必须使用 GCC(在 Windows 上使用 MinGW-w64 或在 Linux 上使用标准 GCC)。切勿使用 MSVC。Tartarus 重度依赖 GCC 特有的 GNU 内联汇编(`__asm__ volatile`)以及 `__attribute__((naked))` 指令来进行 Ring-0 状态操纵,而 MSVC 不支持在 x64 目标上使用这些特性。 需要交叉编译工具链和 `gnu-efi`。 ``` # 1. 编译 core ASM interrupt wrappers nasm -f win64 src/isr.asm -o src/isr.o nasm -f win64 src/trampoline.asm -o src/trampoline.o ``` # 2. 构建 Tartarus EFI 二进制文件 make ## 在 QEMU 中运行 **Tartarus 需要一个 FAT32 格式的磁盘镜像才能通过 UEFI 引导,并使用其原生的 fat32.c 驱动程序在本地解析 payload。** * 创建一个 50MB 的 FAT32 磁盘镜像 (disk.img)。 * 将编译好的 BOOTX64.efi 复制到磁盘镜像内部的 EFI/BOOT/ 目录中。 * 将你的目标 payload(例如 subject.exe 或原始 shellcode)直接放入磁盘镜像的根目录。Tartarus 的剖析引擎会自动扫描并映射它找到的第一个有效可执行文件。 **使用 OVMF 固件通过 QEMU 运行:** ``` qemu-system-x86_64 -bios OVMF.fd -drive file=disk.img,format=raw -m 512M -vga std ``` **架构师:thyrn90** **许可证:BSD 2-Clause**
标签:x86_64架构, 云资产清单, 内核开发, 客户端加密, 底层硬件研究, 操作系统开发, 身份验证强制, 逆向工程