如何保护Golang源代码

时间:2014-07-31 15:15:26

标签: go reverse-engineering protection

实际上,我是一名PHP开发人员。我想卖掉我的PHP产品。

所以,我想保护PHP中的一些主要源代码。但这在PHP中是不可能的。

我也知道Golang。所以,我想在golang代码中构建秘密算法并编译成二进制文件。

最后,我想用PHP代码&&amp ;;保护我的PHP主要算法。二进制程序。

我怀疑是:

当我将golang源代码编译成二进制文件时。 是否可以从二进制文件中获取golang源代码?

2 个答案:

答案 0 :(得分:8)

不,如果他们真的想要,他们可以反汇编二进制文件并猜测算法对程序集的作用,但这适用于所有语言。

如果它运行,它可以被拆卸并且可以被打破。

答案 1 :(得分:2)

您可以采取三项措施来保护您的代码。

  1. 当然,您可以在构建之前对所有代码进行模糊处理。 我没有任何特定的golang工具来做这件事。

  2. 剥离符号 但我担心一个有天赋的黑客"谁会反编译并试图窃取我的工作。它已经发生过几次了。 所以,你想要的东西是"黑客"因为尝试和重新组装的工作太多而被打败了。

  3. 剥离符号应该绰绰有余。

    您可以省略通过' -w'的调试信息。标记到链接器,您可以通过传递' -s'来省略符号表。

    请在此处查看1.5中的工具链接: https://golang.org/cmd/link/

    1. 设备指纹识别 这可确保您的软件无法运行,除非它在为其生成许可证时位于同一台计算机上。
    2. 许可证存储在您的服务器上,指纹元数据将被发送并检查。

      你可以在这里看到这个:

      https://github.com/hashicorp/nomad/blob/master/client/client.go#L147

      请注意,在他们的代码中,他们不会生成针对指纹的许可证。这是你想要做的额外的事情。你也可以散列它并签名和其他花哨的东西,但这篇文章的细节太多了。

      当然是"黑客"可以解决这个问题,他们可以反编译你的代码,但正如我在步骤2中提到的,通过剥离符号可以很好地打败它。

      混淆,如步骤2所示,但大多数体面的编码人员都可以找到代码进行检查的地方,只需注释掉检查并重新编译即可。

      但没有符号,几乎不可能重新编译。

      希望有帮助...