2

目标:加载已验证签名(或针对任意算法验证)的 .so/.bundle。

我希望能够使用 OSX 的内置二进制签名工具或一些自定义算法来验证 .so/.bundle,然后使用 dlopen 加载该 .so/.bundle ...

关键在于似乎没有程序化的方式来检查然后加载。可以手动检查文件,然后在之后加载它.. 但是有一个机会窗口,有人可以在其中将该文件换成另一个文件。

由于文件系统锁在 OSX 中是建议性的,因此它们对于此目的不是那么有用。

4

1 回答 1

1

您可以在签名中存储 *.so 或 *.dylib 文件的 sha256sum。验证证书后,您可以将 *.so 或 *.dylib 复制到随机临时位置,然后验证复制的 *.so 或 *.dylib 是否具有给定的校验和。如果是这样,那么您可以动态加载副本。覆盖随机临时文件的机会可能仍然很小,但我想它会很小。我想您可以在调用 dlopen 之后但在调用 dlsym 之前重新验证校验和。如果校验和不匹配,那么您可以调用 dlcose 来卸载库,而不执行其中的任何函数。

于 2009-07-21T16:37:28.150 回答