Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 569

面向跳转的编程(JOP)

面向跳转的编程(JOP) 是什么?

面向跳转的编程(JOP)Bletsch 等人在 2011 年提出的代码复用利用技术,通过一个 dispatcher 串联以间接跳转结尾的 gadget,作为 ROP 的替代方案,无需依赖 ret。


JOP 由 Bletsch、Jiang、Freeh 和 Liang 在 2011 年提出,是 ROP 的一般化形式。它不再使用以 ret 结尾的 gadget,而是用以 jmp [rax] 等间接跳转结尾的 gadget,并依靠攻击者控制的 dispatcher 在 gadget 地址表上推进。由于控制流不再依赖调用栈,因此 JOP 能绕过 shadow stack、stack canary 等针对 ret 链的旧式缓解。已有针对 Windows、Linux 与嵌入式系统的可用 JOP 链,通常结合信息泄露绕过 ASLR。现代硬件防御包括 Intel CET/IBT 与 ARM BTI,通过限制间接跳转目标来打断朴素的 JOP 链。

示例

  1. 01

    针对加固了调用栈但间接跳转不受限的嵌入式固件构建 JOP 链。

  2. 02

    在 Linux 上结合 JOP dispatcher 与 libc 调用 execve,绕过仅有 shadow stack 的防御。

常见问题

面向跳转的编程(JOP) 是什么?

Bletsch 等人在 2011 年提出的代码复用利用技术,通过一个 dispatcher 串联以间接跳转结尾的 gadget,作为 ROP 的替代方案,无需依赖 ret。 它属于网络安全的 攻击与威胁 分类。

面向跳转的编程(JOP) 是什么意思?

Bletsch 等人在 2011 年提出的代码复用利用技术,通过一个 dispatcher 串联以间接跳转结尾的 gadget,作为 ROP 的替代方案,无需依赖 ret。

面向跳转的编程(JOP) 是如何工作的?

JOP 由 Bletsch、Jiang、Freeh 和 Liang 在 2011 年提出,是 ROP 的一般化形式。它不再使用以 ret 结尾的 gadget,而是用以 jmp [rax] 等间接跳转结尾的 gadget,并依靠攻击者控制的 dispatcher 在 gadget 地址表上推进。由于控制流不再依赖调用栈,因此 JOP 能绕过 shadow stack、stack canary 等针对 ret 链的旧式缓解。已有针对 Windows、Linux 与嵌入式系统的可用 JOP 链,通常结合信息泄露绕过 ASLR。现代硬件防御包括 Intel CET/IBT 与 ARM BTI,通过限制间接跳转目标来打断朴素的 JOP 链。

如何防御 面向跳转的编程(JOP)?

针对 面向跳转的编程(JOP) 的防御通常结合技术控制与运营实践,详见上方完整定义。

面向跳转的编程(JOP) 还有哪些其他名称?

常见的别称包括: JOP。

相关术语