【问题标题】:go compilation: remove personal info from executable [closed]去编译:从可执行文件中删除个人信息[关闭]
【发布时间】:2020-05-11 21:19:11
【问题描述】:

我需要编译一个发布的go程序,我注意到在可执行文件中写入了各种个人信息,例如程序在我的电脑上的原始文件夹。

是否有一个标志来避免分发所有这些“个人”字节? 编译过程中是否可以重命名所有函数名?

谢谢

【问题讨论】:

  • 生产二进制文件无论如何都应该构建在一个干净的环境中,它应该没有可识别的用户路径。不,编译器不提供任何选项来混淆已编译的二进制文件。

标签: go compilation exe executable


【解决方案1】:

go build 使用-trimpath 参数。

来自go help build

-修剪路径

从结果中删除所有文件系统路径 可执行。而不是绝对文件系统路径,记录的文件 名称将以“go”(对于标准库)或 模块路径@版本(使用模块时),或者一个简单的导入路径 (使用 GOPATH 时)。

【讨论】:

  • 但是我看不出有什么不同。另外:有没有办法屏蔽函数名称?
【解决方案2】:

回答你的第二个问题:

是否可以在编译期间重命名所有函数名称?

不,当然不是。

(而且您也不能更改系统调用号来混淆您的程序的功能。)

(((如果你想做一些不正当的事情:不要。))

【讨论】:

  • 事实上我不想更改系统调用号(如 wtf...),如果我编写了一个名为“verification”的函数,我希望它被称为“jcdn5geinj”.. .....也许我只是害怕花了 200 多小时开发一些幼稚的黑客会在 1 小时内对我的代码进行逆向工程以转售它
  • @dhim 你应该重新考虑你的商业模式。即使您将函数命名为“kdfeijefkn”,它仍然很容易反编译(并发现它做了重要的事情)。
  • 肯定,但还是不太清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多