【问题标题】:NaCl sel_ldr behavior and system callsNaCl sel_ldr 行为和系统调用
【发布时间】:2014-09-03 18:12:59
【问题描述】:

在 Google 的 NaCl(本机客户端)SDK 中有 sel_ldr.py(安全精灵加载程序),它允许用户运行通过 NaCl 或 PNaCl 工具链创建的 NaCl 可执行文件 (.nexe)。 sel_ldr.py 在运行这些 .nexe 文件时究竟做了什么?

sel_ldr 具体如何处理 NaCl 可执行文件的操作系统调用?阅读 NaCl 文档,大部分信息都与使用辣椒 API 创建 Chrome 浏览器可移植应用程序有关,并且没有太多关于 sel_ldr 服务运行时如何处理这些 NaCl 可执行文件的详细信息。

我创建了许多 NaCl 可执行文件,它们在 sel_ldr 中运行时可以创建目录、文件、管道、睡眠,并使用各种其他系统调用,并且可以正常工作。我知道本机客户端本身监控系统调用。监控是通过使用 Pepper API 完成的,还是 sel_ldr.py 在其服务运行时沙箱中拦截系统调用并将其重定向到 NaCl 自己的系统调用实现?

【问题讨论】:

    标签: google-nativeclient


    【解决方案1】:

    NaCl 是一个小型操作系统,它可以填充对底层操作系统的调用。内部沙箱不能执行常规系统调用(验证器强制执行此操作),因此它必须通过 NaCl 的蹦床系统调用跳转到受信任的代码,该代码执行与常规操作系统类似的检查类型,然后再调用底层操作系统自己的系统调用.

    Pepper API 调用只是另一种类型的系统调用,但它们仅在嵌入 Chrome 时出现。 Pepper 调用实际上是 NaCl 模块和 Chrome 进程之间的进程间通信。

    整体实现是服务运行时,在original NaCl research paper中有很好的描述。有一个带有anatomy of a syscall 的旧站点(不幸的是不是当前文档),并且源显然是开放的。

    【讨论】:

    • Stack Overflow 不允许我发布超过 2 个链接,因此这里是源参考:the developer-exposed headerx86-32 context switch 代码。
    • 这是一个很好的答案!我很高兴 Chrome 开发人员在 Stack Overflow 上。当 devenv 获得编译器时,我会高兴得手舞足蹈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多