go build 时如何才能不携带 BuildInfo 信息? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
lysShub
V2EX    Go 编程语言

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

  •  
  •   lysShub 73 天前 3322 次点击
    这是一个创建于 73 天前的主题,其中的信息可能已经有所发展或是发生改变。

    直接二进制查看 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= 

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

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

    即便把 buildinfo 去掉,只需要简单的命令 strings ./xxx 就可以看到内部的依赖软件路径。
    skiy
        17
    skiy  
       73 天前 via iPhone
    加个壳行不?
    qieqie
        18
    qieqie  
       73 天前
    strip --remove-section=.go.buildinfo ./bin
    可以删一些 section ,但想让人看不出来是 go 写的基本没可能
    ExplodingDragon
        19
    ExplodingDragon  
       73 天前
    直接用 upx 压缩,再剔除二进制文件的 upx 的字段,这样至少静态分析没法判断是 go 写的
    lysShub
        20
    lysShub  
    OP
       73 天前
    @kk2syc 我也是这个思路,是在 cmd/go/internal/load.setBuildInfo
    bugfan
        21
    bugfan  
       73 天前
    编译时候,加参数把符号表去掉就行了
    Sendya
        22
    Sendya  
       73 天前
    是不是加 `-ldflags="-w -s -extldflags=-static"` 可以去除? 我还真没直接看过二进制里的这些信息
    Sendya
        23
    Sendya  
       73 天前
    #22 无效,还是有的
    gullitintanni
        24
    gullitintanni  
       73 天前
    @yolee599 #8 比如 gcc 会在 .comment 段记录版本号,而且这个信息默认不会被 strip 掉( strip --strip-unneeded )

    @bv #16 有的时候还是挺有用的,比如某些国内 VPS 厂商会用脚本自动化扫描机器上的二进制文件,利用这些信息能初步检测你有没有在搞不合规的事(比如搭梯子中转)
    bigtear
        25
    bigtear  
       72 天前
    传统逆向对抗的加壳加反调试呗,VMP 之类的
    CodeCodeStudy
        26
    CodeCodeStudy  
       72 天前
    @ExplodingFKL #19 怎么剔除二进制文件的 upx 的字段
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2699 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 13:25 PVG 21:25 LAX 05:25 JFK 08:25
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86