为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕少森 2022-01-10 14:29:30
当使用命令“nm go_binary”时,我发现变量、函数和包的名称甚至我的代码所在的目录都显示出来了,有什么办法可以混淆命令“go build”生成的二进制文件并防止go二进制文件被黑客利用?
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

混淆不能阻止逆向工程,但在某种程度上可以防止信息泄露

这就是burrowers/garble(Go 1.16+,2021 年 2 月):

字面混淆

使用该-literals标志会导致文字表达式(例如字符串)被更复杂的变体替换,在运行时解析为相同的值。
此功能是可选的,因为它可能会根据输入代码导致速度变慢。

用作常量的文字表达式不能被混淆,因为它们是在编译时解析的。这包括const声明的任何表达式部分。

微型模式

-tiny标志被传递时,额外的信息将从生成的 Go 二进制文件中删除。
这包括行号、文件名和运行时中打印恐慌、致命错误和跟踪/调试信息的代码。
总而言之,这可以使我们的测试中的二进制文件缩小 2-5%,并防止提取更多信息。

使用此标志,将不会打印任何恐慌或致命的运行时错误,但它们仍然可以在内部正常处理。
此外,GODEBUG环境变量将被忽略。

但:

导出的方法目前永远不会被混淆,因为接口和反射可能需要它们。该领域正在进行中。


查看完整回答
反对 回复 2022-01-10
?
ITMISS

TA贡献1871条经验 获得超8个赞

我认为这个问题的最佳答案是如何保护 Python 代码?,具体这个答案

虽然这个问题是关于 Python 的,但它通常适用于所有代码。

我打算将这个问题标记为重复,但也许有人会提供更多的见解。


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 301 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信