我将 Adobe Reader XI 用于一个小研究项目。
我知道 Adobe 使用 SpiderMonkey 作为其 JS 引擎。
打开包含 JS 的 .pdf 文件时,JS 代码在运行时分部分 (JIT) 编译为字节码,并且字节码被映射到具有 RW 访问权限的页面中的堆上。我试图了解字节码是如何执行的。可执行操作码在运行时位于/映射的位置?
使用 windbg!address命令,我在堆上看不到任何具有 RX 访问权限的页面。
我试图做的是弄清楚 JS 引擎是如何工作的,直到页面级别。意思是,引擎如何将字节码解释为可执行的操作码,以及他自己将这些可执行指令映射到哪里,以及每次下一个可执行代码时他如何确定映射到哪里。