go build 时如何才能不携带 BuildInfo 信息?

2 天前
 lysShub

直接二进制查看 go 编译的二进制文件,会发现带有 import 包信息,挺敏感的

dep	github.com/cespare/xxhash/v2	v2.3.0	h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
dep	github.com/google/uuid	v1.6.0	h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
dep	google.golang.org/grpc	v1.70.0	h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
dep	google.golang.org/protobuf	v1.36.2	h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU=
dep	github.com/golang-jwt/jwt/v5	v5.2.1	h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=

但查了下没发现去除的办法

2544 次点击
所在节点    Go 编程语言
26 条回复
lysShub
2 天前
kk2syc
2 天前
翻 go 编译器源码,找到关于这块信息的部分去除,diy 一个编译器就行了。
Dreax
2 天前
https://github.com/burrowers/garble garble 可以去掉但是可能有副作用
liuidetmks
2 天前
同好奇,c 语言也有同样问题
realpg
2 天前
不用开源的 自己撸就完了
rekulas
2 天前
有个邪教方法 把三方包下载到本地自己改成随机名字 import 如何
conn457567
2 天前
这也算敏感信息?安全过度了吧。按这种标准大部分语言的编译打包工具全不用玩了,自己发明一种?
yolee599
2 天前
@liuidetmks #4 用了 10 年 c 语言,我也好奇你说的这个,c 语言哪里有 build info ?
seers
2 天前
如果是在字符串区就直接删了呗,应该不影响功能,注意对齐就行
CHTuring
2 天前
@conn457567 #7 「自主研发」的含金量
xtreme1
2 天前
@yolee599 8# 符号表吧可能...
bruce0
2 天前
@CHTuring 遥遥领先
bv
2 天前
SBOM 清单,在安全与合规审计,软件溯源时还是很有用的,建议留着。
要说怎么去除,我也不知道
NessajCN
2 天前
你可以自己把库都 fork 下来改个包名 import
owen800q
2 天前
@bv 主要是上面的意思是不想让某部门知道是用 Go 写的
bv
2 天前
@owen800q buildinfo 留着是利大于弊,藏着掖着弄的好像有什么见不得人的地方一样(公开依赖项不利于宣称自主研发吗? )。

即便把 buildinfo 去掉,只需要简单的命令 strings ./xxx 就可以看到内部的依赖软件路径。
skiy
2 天前
加个壳行不?
qieqie
2 天前
strip --remove-section=.go.buildinfo ./bin
可以删一些 section ,但想让人看不出来是 go 写的基本没可能
ExplodingFKL
2 天前
直接用 upx 压缩,再剔除二进制文件的 upx 的字段,这样至少静态分析没法判断是 go 写的
lysShub
2 天前
@kk2syc 我也是这个思路,是在 cmd/go/internal/load.setBuildInfo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1159780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX