GCC 可见性功能使我们能够在共享库中剥离那些我们不希望客户看到的 API。事实上,我们不能使用 ldopen 来调用那些隐藏的函数,但我想知道这是否足够安全以保护我们敏感的 API。
我只是想简要解释一下共享库中隐藏 API 的可靠性/安全性,以便平衡工作和风险。我问这个问题只是因为我在 GCC 的文档中找不到关于这个问题的充分描述。
请重新打开这个问题。
GCC 可见性功能使我们能够在共享库中剥离那些我们不希望客户看到的 API。事实上,我们不能使用 ldopen 来调用那些隐藏的函数,但我想知道这是否足够安全以保护我们敏感的 API。
我只是想简要解释一下共享库中隐藏 API 的可靠性/安全性,以便平衡工作和风险。我问这个问题只是因为我在 GCC 的文档中找不到关于这个问题的充分描述。
请重新打开这个问题。
可见性属性的真正目的是该库不公开不打算直接使用的自身部分。对于任何试图破解它的人来说,它几乎没有什么区别。他们仍然需要反汇编代码,并且找出函数的入口点并不难(你自己看看!)。是的,通过兆字节的代码工作是一项艰巨的工作,但是有经验的人会知道要寻找什么样的东西,因此可能会跳过大量代码。
只要你能反汇编代码,你就可以破解它。可能需要更长的时间,但可以做到。更安全的保护是在某些服务器上运行代码。暗黑破坏神3就是这样保护它的,效果很好。然而,破解某些东西是一个动机问题。如果您的程序足够好并且黑客足够坚定,那么有人会破解它。您只能增加所需的时间。