在谷歌的NaCl (本地客户端) SDK中有sel_ldr.py (安全精灵加载程序),它允许用户运行通过NaCl或PNaCl工具链创建的NaCl可执行文件(.nexe)。sel_ldr.py在运行这些.nexe文件时到底是做什么的?
具体来说,sel_ldr如何处理NaCl可执行文件的操作系统调用?阅读NaCl文档时,大多数信息都与使用pertains创建Chrome可移植应用程序有关,而且sel_ldr服务运行时如何处理这些NaCl可执行文件的细节也不多。
我已经创建了许多NaCl可执行文件,在sel_ldr中运行时,它们可以创建目录、文件、管道、睡眠和使用其他各种系统调用,并且工作正常。我知道本机客户端本身监视系统调用。监视是通过使用pepper完成的,还是sel_ldr.py在其服务运行时沙箱中拦截并重定向到NaCl自己的系统调用实现?
发布于 2014-09-03 21:18:32
NaCl是一种小型操作系统,它可以减少对底层操作系统的调用。内部沙箱无法执行常规的syscalls (验证器强制执行此操作),因此它必须遍历NaCl的蹦床系统,这些系统跳转到可信代码,这些代码在调用底层操作系统的syscall之前执行类似类型的检查。
胡椒API调用只是另一种类型的syscall,但只有在Chrome中嵌入时才会出现。胡椒调用实际上是NaCl模块和Chrome进程之间的进程间通信.
总体实现是服务运行时,可以在原始NaCl研究论文中找到一个很好的描述。有一个带有syscall的解剖的旧站点(不幸的不是当前的文档),而且源代码显然是开放的。
https://stackoverflow.com/questions/25650979
复制相似问题