在加载之前检查OSX包的签名

时间:2009-07-21 16:29:43

标签: macos dll bundle digital-signature

目标:加载已经过验证签名(或根据任意算法进行验证)的.so / .bundle。

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

这里的扳手是,似乎没有编程方式来检查然后加载。可以手动检查文件,然后加载它。但是有一个机会窗口,有人可以将该文件替换为另一个文件。

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

1 个答案:

答案 0 :(得分:1)

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