实际上,我是一名PHP开发人员。我想卖掉我的PHP产品。
所以,我想保护PHP中的一些主要源代码。但这在PHP中是不可能的。
我也知道Golang。所以,我想在golang代码中构建秘密算法并编译成二进制文件。
最后,我想用PHP代码&&amp ;;保护我的PHP主要算法。二进制程序。
我怀疑是:
当我将golang源代码编译成二进制文件时。 是否可以从二进制文件中获取golang源代码?
答案 0 :(得分:8)
不,如果他们真的想要,他们可以反汇编二进制文件并猜测算法对程序集的作用,但这适用于所有语言。
如果它运行,它可以被拆卸并且可以被打破。
答案 1 :(得分:2)
您可以采取三项措施来保护您的代码。
当然,您可以在构建之前对所有代码进行模糊处理。 我没有任何特定的golang工具来做这件事。
剥离符号 但我担心一个有天赋的黑客"谁会反编译并试图窃取我的工作。它已经发生过几次了。 所以,你想要的东西是"黑客"因为尝试和重新组装的工作太多而被打败了。
剥离符号应该绰绰有余。
您可以省略通过' -w'的调试信息。标记到链接器,您可以通过传递' -s'来省略符号表。
请在此处查看1.5中的工具链接: https://golang.org/cmd/link/
许可证存储在您的服务器上,指纹元数据将被发送并检查。
你可以在这里看到这个:
https://github.com/hashicorp/nomad/blob/master/client/client.go#L147
请注意,在他们的代码中,他们不会生成针对指纹的许可证。这是你想要做的额外的事情。你也可以散列它并签名和其他花哨的东西,但这篇文章的细节太多了。
当然是"黑客"可以解决这个问题,他们可以反编译你的代码,但正如我在步骤2中提到的,通过剥离符号可以很好地打败它。
混淆,如步骤2所示,但大多数体面的编码人员都可以找到代码进行检查的地方,只需注释掉检查并重新编译即可。
但没有符号,几乎不可能重新编译。
希望有帮助...