zhve2x4
V2EX  ›  问与答

天呀, go 可执行文件泄露源码

  •  1
     
  •   zhve2x4 · Dec 27, 2019 · 3349 views
    This topic created in 2347 days ago, the information mentioned may be changed or developed.

    首先说一下,我编译 go 源码的时候,只是简单的 go build,没有带额外参数 然后我放到 linux 服务器上,使用 gdb list,然后就看到源码了。 类似如下:

    (gdb) list 1
    1	package main
    2	
    3	import (
    4		"uvs/config"
    5		"uvs/db"
    6		"uvs/httpserver"
    7		"uvs/log"
    8		"uvs/model"
    9		"fmt"
    10		"github.com/sirupsen/logrus"
    

    现在问题来了,是不是说,我完全可以通过 gdb 或类似的工具获取常规方法编译的 go 二进制文件中的***全部源码***?

    12 replies    2019-12-27 16:16:05 +08:00
    manami
        1
    manami  
       Dec 27, 2019 via Android
    在 linux 服务器端看到源码正常,别人又不能看到。如果是客户端看到源码(反编译)也正常,把核心逻辑代码放在服务器端就行。
    sabermiao
        2
    sabermiao  
       Dec 27, 2019   ❤️ 2
    By default, go build combines symbol and debug info with binary files. However, you can remove the symbol and debug info with go build -ldflags "-s -w".
    编译的时候去掉符号和调试信息就行了
    lishunan246
        3
    lishunan246  
       Dec 27, 2019 via Android
    默认编译的是 release with debug info。
    不想要的话 go build -ldflags "-s"
    zhve2x4
        4
    zhve2x4  
    OP
       Dec 27, 2019   ❤️ 2
    为什么今天我发这个主题,因为有个悲催的事情,我的源码被删了,但是二进制还在,我想从二进制获取 go 的源码。
    cmdOptionKana
        5
    cmdOptionKana  
       Dec 27, 2019
    这年头写程序不用 git 之类的,会有如履薄冰的危险感……
    fuxiaohei
        6
    fuxiaohei  
       Dec 27, 2019
    各种常量、文本等很容易找到。但是你要从二进制还原到代码,非常困难啊
    zhve2x4
        7
    zhve2x4  
    OP
       Dec 27, 2019
    @cmdOptionKana 已经用了 git,但是没有 push 到服务器,服务器上的代码比较旧,参考价值不大。然后我不知道脑子哪根筋不对,直接 rm -rf 删了本地代码( linux 桌面的)。
    learnshare
        8
    learnshare  
       Dec 27, 2019
    @zhve2x4 用 Git 不同步到远端,哪来安全性可言
    tiedan
        9
    tiedan  
       Dec 27, 2019
    清除符号表和调试信息
    ylsc633
        10
    ylsc633  
       Dec 27, 2019
    "为什么今天我发这个主题,因为有个悲催的事情,我的源码被删了,但是二进制还在,我想从二进制获取 go 的源码。"

    对不起, 我还是笑出了声...

    目前我不知道怎么解决你的问题! 不过以后,如果你自己的代码,实在不想别人看见,可以在 github 建个私有的包.. 这种只保存在本地... 实在是太不保险了
    Immortal
        11
    Immortal  
       Dec 27, 2019
    用啥写的代码 goland 一类有本地 history
    mogita
        12
    mogita  
       Dec 27, 2019
    gitlab.com 无限免费私有仓库它不香吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   953 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 18:51 · PVG 02:51 · LAX 11:51 · JFK 14:51
    ♥ Do have faith in what you're doing.