编译Go语言程序时,导入项和包名会发生什么变化

juzqafwq  于 2023-01-22  发布在  Go
关注(0)|答案(1)|浏览(120)

一旦编译了一个go程序,如果机器码被反编译成汇编语言(或者C语言),有没有办法提取出包的名字(如后面的问题所解释的)?
在go中,我们通常通过提供一个指向repo的链接来导入包(如果是开源的话)。例如github.com/abc/abc。这意味着库开发者的用户名通常是包导入的一部分。现在,当程序被编译时,它们会发生什么?它们能以某种方式从编译后的二进制文件中提取出来吗?
一般来说,我认为编译器应该把整个代码放在一个地方,然后就可以去掉那些名字,但我不确定,这就是为什么我问这个问题。我问这个问题是因为在一个特殊的情况下,如果包导入以某种方式包含在二进制文件中,它将导致严重的安全问题。

i2byvkas

i2byvkas1#

经过一番调查,我发现Go语言确实在二进制文件中包含了这些信息。我在一个文本编辑器中打开了二进制文件,试图查找repo名称。在文件的末尾,有一个很大的文本部分,其中包含了大量的文本信息。程序中使用的repo名称也可以简单地查找。
这意味着,如果您正在从事需要尽可能多地隐藏信息的安全项目,则需要在某种程度上小心这些信息。

相关问题