尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
偷看CPU的保险箱:skitter-creek-bath-salts从C6 stash挖出的5个隐藏寄存器
偷看CPU的保险箱skitter-creek-bath-salts从C6 stash挖出的5个隐藏寄存器【免费下载链接】skitter-creek-bath-saltsUnlocking _everything_ on the CPU with DRAM scrambling项目地址: https://gitcode.com/gh_mirrors/sk/skitter-creek-bath-saltsskitter-creek-bath-salts 是一个用 DRAM scrambling内存地址打乱技术解锁 CPU 保护区域的开源安全研究项目它重编程内存控制器的底层地址翻译让 PSP 私有内存、SMM、微码补丁以及 CPU 深睡时藏起来的 C6 stash保险箱一览无余。这篇文章带你快速看懂它是如何从 C6 stash 里挖出 5 个平时看不见的 CPU 寄存器状态以及为什么这 5 个寄存器只是开胃菜。C6 stash是什么CPU深睡前的寄存处CPU 核心进入 C6 深度休眠时会被断电寄存器状态无处安放——于是 CPU 会把每个核心的完整 x86 架构上下文寄存到 DRAM 顶部的一段隐藏保留区里等唤醒时再恢复。这一段内存就是C6 stash位于物理内存顶端TOP_MEM 之上对操作系统、ring-0 甚至 CPU 自身都不可见在 AMD Family 16h 平台上它是一块8 MiB的保留区从 userspace/dram_carveouts.c 可以看到它紧挨着 8 MiB 的 PSP 私有内存两者加起来就是内存顶部的保险箱区每个休眠核心占一个16 KiB 保存区测试机上 4 个核心分别落在CC6_BASE {0, 0x4000, 0x8000, 0xc000}。换句话说CPU 把最私密的寄存状态明文放在了 DRAM 的电容里只是钥匙地址翻译藏在内存控制器深处。一张表看懂从C6 stash挖出的5个寄存器作者对每个核心保存区的逐字节扫描先顺手命中了这 5 个经典 x86 状态以下为例测平台上 core 0 的值完整命令见 README.md 的 C6 章节保存区偏移寄存器/状态挖出的值core 00x8b0GS 基址 / per-cpu base0xffff9be4e36000000x9a0CR3页表根0x0fd460000x9b8IA32_APIC_BASE0xfee009000xa38可变 MTRRbase/mask0x6f000000 / …08000xb10保存的 RIP0xffffffff8f3a0029有意思的细节藏在 APIC_BASE 那一列4 个核心里只有 core 0 的值是0xfee00900BSP 位被置位其余三个都是0xfee00800——引导处理器和它的三个打工AP就这样在保险箱里被当场抓包。但这 5 个寄存器 ring-0 本来就能读真正让研究者兴奋的是保存区里其他东西ring-0 根本摸不到、也从未被公开文档讨论过的 CPU 内部寄存器状态正躺在那里等人行走。三步解锁如何读取C6保护内存完整命令清单整个流程分三步工具都在 userspace/ 目录跑之前请确认目标平台项目只在 AMD Family 16h 上验证过平台自检./userspace/platform_check——不在支持列表上的机器直接退出避免白折腾定位保险箱sudo ./userspace/dram_carveouts --region cc6会输出CC6_BASE和CC6_SIZEuserspace/dram_carveouts.c 里封装了CC6 位于 TOP_MEM0这一布局规则倒出数据用 userspace/dram_dump.c 通过已求解的别名映射读取sudo ./userspace/dram_dump --protected-pa $CC6_BASE --length 0x10000 \ $(printf -- --map %s data/maps/2x4gb_*.map) cc6.bin映射文件data/maps/下的.map是破解钥匙由 analysis/gather_aliases.py 收集地址别名、再交给 analysis/unspaghettify.py 用 z3 解出。仓库自带多种内存配置1x1gb ~ 2x4gb的现成映射按你机器的 DIMM 布局选对应前缀即可没有匹配的拓扑就按 USAGE.md 自己烤一份。为什么这些寄存器只是冰山一角C6 stash 保存区里最值钱的其实是0x1800 处的微码补丁副本核心掉入 C6 时易失的微码 RAM 会熄灭CPU 把加载中的补丁存进 stash唤醒时重新灌回——所以这一份副本正是核心下次醒来要执行的东西。作者从 stash 里抠出 0x5f0 字节后与系统固件里的微码比对fam16h 命中 68/94 个数据块确认抓到了正在跑的微码详见 README.md。再往下就是 userspace/dram_poke.c 的主场读得进去的别名同样写得进去。PSP 私有内存fTPM 的 RSA 引擎就住在这里、SMM 的 SMRAM都已被同一套 DRAM scrambling 管道逐一解锁——正如项目口号所说翻转内存控制器最后一个环节的一位保险箱里的一切都敞开了。动手前的检查清单与注意事项✅ 仅在自己的硬件上做实验DRAM_RW会实时改动内存控制器状态系统可能不稳定务必备好断电重启手段✅ 全程需要 root 权限先跑./userspace/platform_check排除不支持的平台✅ 想从零构建环境git clone https://gitcode.com/gh_mirrors/sk/skitter-creek-bath-salts后执行make构建 kernel/spaghettify.ko 内核模块与全部用户态工具✅ 完整工具链参数与原理见 USAGE.md快速上手示例见 README.md。一句话总结CPU 把秘密交给 DRAM 保管却忘了最底层的地址翻译可以被重编程。skitter-creek-bath-salts 证明保险箱的锁装在一致视图上而打乱坐标之后锁形同虚设。 【免费下载链接】skitter-creek-bath-saltsUnlocking _everything_ on the CPU with DRAM scrambling项目地址: https://gitcode.com/gh_mirrors/sk/skitter-creek-bath-salts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

从Prompt到Context:AI Agent上下文工程实战指南

从Prompt到Context:AI Agent上下文工程实战指南

最开始做 AI Agent 的时候,我以为把 Prompt 写漂亮就完事了。结果第一个真实项目上线不到两天,就被打脸了:用户在对话里提到一个半小时前交代的关键信息,Agent 直接“失忆”,开始自己编造需求。我一开始怀疑是模型不行…

📅 2026/10/9 0:27:07
多Agent集群实战:DeepAgents+MCP+A2A+Skills全解析

多Agent集群实战:DeepAgents+MCP+A2A+Skills全解析

1. 为什么单Agent做长任务必翻车:上下文断链与工具失控先讲个我自己的经历。半年前接了一个需求:做一个能自动完成"需求调研→技术验证→输出文章"的Agent。第一次的直觉做法特别简单粗暴——把一个Agent塞满所有系统提示词,让它按…

📅 2026/10/9 0:27:07
第118篇 const 与编译期常量:延迟初始化之外的第三个选择

第118篇 const 与编译期常量:延迟初始化之外的第三个选择

const val 是 Kotlin 里最简单的一个关键字,也是最容易暴露"只用过、没理解"的点。面试里问"编译期常量是什么意思",能答"编译时直接替换、不进内存"是及格;能答清二进制兼容的坑才是高分——而那个坑在真实项目里造成过线上事故。 先把结论…

📅 2026/10/9 0:27:07
MORE NEWS

更多资讯

📰

汇编语言实战指南:从核心概念到性能优化与逆向分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

纽约出租车流量预测:GRU/LSTM/CNN-GRU时序建模实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Modbus协议在PLC项目中的实战解析:主站、从站与报文格式全掌握

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Java企业级员工系统实战:Spring Boot+MyBatis-Plus从零搭建

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

熵减与组织活力:华为活力引擎模型的管理指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

串口不死:从UART物理层、RS485到DMA缓冲区的IIoT调试指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬