当使用命令“nm go_binary”时,我发现变量、函数和包的名称甚至我的代码所在的目录都显示出来了,有什么办法可以混淆命令“go build”生成的二进制文件并防止go二进制文件被黑客利用?
2 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
混淆不能阻止逆向工程,但在某种程度上可以防止信息泄露
这就是burrowers/garble
(Go 1.16+,2021 年 2 月):
字面混淆
使用该-literals
标志会导致文字表达式(例如字符串)被更复杂的变体替换,在运行时解析为相同的值。
此功能是可选的,因为它可能会根据输入代码导致速度变慢。
用作常量的文字表达式不能被混淆,因为它们是在编译时解析的。这包括
const
声明的任何表达式部分。微型模式
当
-tiny
标志被传递时,额外的信息将从生成的 Go 二进制文件中删除。
这包括行号、文件名和运行时中打印恐慌、致命错误和跟踪/调试信息的代码。
总而言之,这可以使我们的测试中的二进制文件缩小 2-5%,并防止提取更多信息。使用此标志,将不会打印任何恐慌或致命的运行时错误,但它们仍然可以在内部正常处理。
此外,GODEBUG
环境变量将被忽略。
但:
导出的方法目前永远不会被混淆,因为接口和反射可能需要它们。该领域正在进行中。
ITMISS
TA贡献1871条经验 获得超8个赞
- 2 回答
- 0 关注
- 301 浏览
添加回答
举报
0/150
提交
取消