如何在英特尔 SGX 围圈内实施动态加载

How to implement dynamic loading inside an Intel SGX Enclave?

本文关键字:施动态 动态 加载 英特尔 SGX      更新时间:2023-10-16

因为英特尔 SGX 围圈内不能使用任何标准库。如何在安全区内实现动态加载?例如,我在扩展名为 .so 的文件中foo1()foo2()函数。

我需要在安全区内动态加载一个函数。然后,Enclave 外部的主函数可以调用加载的函数。

应用.cpp

status = ecall_dynamicLoading(enclave_id,func); // func is a function pointer loaded from .so // for example, func = &foo1;

飞地.cpp

ecall_dynamicLoading(func){ (*func)(/* some inputs */); }

可能吗?

谢谢。

根据英特尔自己的文档,您无法在 ENCLAVE 内加载shared_object (.so(。您需要将其转换为静态库。

https://software.intel.com/en-us/node/708963https://software.intel.com/en-us/node/708964

即便如此,静态库也有很多限制。