如何在 Golang 二进制文件中混淆变量、函数和包名称的字符串?

当使用命令“nm go_binary”时,我发现变量、函数和包的名称甚至我的代码所在的目录都显示出来了,有什么办法可以混淆命令“go build”生成的二进制文件并防止go二进制文件被黑客利用?


慕少森
浏览 308回答 2
2回答

守候你守候我

混淆不能阻止逆向工程,但在某种程度上可以防止信息泄露这就是burrowers/garble(Go 1.16+,2021 年 2 月):字面混淆使用该-literals标志会导致文字表达式(例如字符串)被更复杂的变体替换,在运行时解析为相同的值。此功能是可选的,因为它可能会根据输入代码导致速度变慢。用作常量的文字表达式不能被混淆,因为它们是在编译时解析的。这包括const声明的任何表达式部分。微型模式当-tiny标志被传递时,额外的信息将从生成的 Go 二进制文件中删除。这包括行号、文件名和运行时中打印恐慌、致命错误和跟踪/调试信息的代码。总而言之,这可以使我们的测试中的二进制文件缩小 2-5%,并防止提取更多信息。使用此标志,将不会打印任何恐慌或致命的运行时错误,但它们仍然可以在内部正常处理。此外,GODEBUG环境变量将被忽略。但:导出的方法目前永远不会被混淆,因为接口和反射可能需要它们。该领域正在进行中。

ITMISS

我认为这个问题的最佳答案是如何保护 Python 代码?,具体这个答案。虽然这个问题是关于 Python 的,但它通常适用于所有代码。我打算将这个问题标记为重复,但也许有人会提供更多的见解。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go