
transcript
show notes
本期深度解析微软 The Old New Thing 中 Raymond Chen 的文章:为什么 Windows 在 AArch64 上实现运行中热补丁,远比 x86 简洁。关键不只是“改写一条跳转指令”,而是固定长度指令、函数前预留空间与调用约定共同创造了安全的切换条件。
我们将拆解热补丁跳板的工作方式,以及一个容易忽略的安全细节:函数入口通常也承载返回地址签名等控制流保护。欢迎结合原文阅读,理解这些设计如何在程序运行前就为在线维护铺路。
原文链接:
https://devblogs.microsoft.com/oldnewthing/20260930-00/?p=112744/
原文标题:Windows on AArch64 also provides for hot-patching, but it’s much simpler than on x86
主要内容:
• AArch64 指令固定为 4 字节且按 4 字节对齐,CPU 不会从一条被改写指令的中间开始执行。
• Windows 在函数入口前预留 12 字节,可容纳三条指令组成的跳板。
• 补丁先写好 `adrp`、`add`、`br` 跳板,再原子性改写函数入口为一条分支指令。
• 跳板使用 `xip0` 计算并跳转到替代函数,其安全性来自调用约定对临时寄存器的定义。
• 热补丁还需兼顾 PAC 等控制流防护:入口改写不仅改变跳转路径,也可能覆盖原有的安全操作。
推荐理由:
这篇文章用一个极小的热补丁机制,串起指令集设计、二进制布局、原子更新、ABI 与控制流安全。它特别值得系统软件、编译器、运行时和底层安全方向的读者细读:所谓“简单”,往往来自多层约束早已协同到位。
---
「Andrej Karpathy的RSS订阅清单」为您精选全球最前沿的AI技术博客文章,深度剖析技术背后的核心洞察。
由 voieech.com 提供技术支持。





