当使用命令" nm go_binary"时,我发现变量,函数和包的名称,甚至我的代码所在的目录都显示出来,有没有办法混淆由二进制生成的二进制文件命令" go build"并防止黑客攻击二进制文件?
答案 0 :(得分:0)
我认为这个问题的最佳答案是How do I protect Python code?,特别是answer。
虽然这个问题与Python有关,但它适用于所有代码。
我将这个问题标记为重复,但也许有人会提供更多的洞察力。
答案 1 :(得分:0)
混淆不能阻止逆向工程,但可以防止信息泄漏
这就是 burrowers/garble
(Go 1.16+,2021 年 2 月):
使用 -literals
标志会导致文字表达式(例如字符串)被更复杂的变体替换,从而在运行时解析为相同的值。
此功能是可选的,因为它可能会导致速度变慢,具体取决于输入代码。
用作常量的文字表达式不能被混淆,因为它们在编译时被解析。这包括 const
声明的任何表达式部分。
当传递 -tiny
标志时,额外的信息会从生成的 Go 二进制文件中剥离。
这包括行号、文件名和运行时中打印恐慌、致命错误和跟踪/调试信息的代码。
总而言之,这可以使我们的测试中的二进制文件小 2-5%,并防止提取更多信息。
有了这个标志,就不会打印任何恐慌或致命的运行时错误,但它们仍然可以在内部正常处理,恢复正常。
此外,GODEBUG
环境变量将被忽略。
但是:
<块引用>导出的方法目前不会被混淆,因为接口和反射可能需要它们。该领域正在进行中。