隐藏在编译golang可执行静态字符串

问题描述:

我已经在代码隐藏在编译golang可执行静态字符串

var myString = "test string" 

我编译和运行

strings myexecutable | grep "test string" 

somethind这样,我看到它的输出。有没有办法在golang中隐藏可执行文件中的明文字符串?单独的文件不是一个选项。

这是保护不是合格的黑客,而是针对简单的用户谁就能在记事本中打开可执行文件,找到加密密钥。

+0

你喜欢'var myString = string([] byte {0x74,0x65,0x73,0x74, 0x20,0x73,0x74,0x72,0x69,0x6e,0x67})? ??需要源仍然是可读 – Flimzy

+0

好吧,这可能帮助,但可能有一个更好的解决方案 –

+4

不能敏感数据存储在您的二进制明文如果它的存在,会有人发现 - 说它保护 – JimB

写作文为一系列的十六进制字节不会帮助你 - 依然会出现字符串,是二进制。

一种解决办法是加扰的,腐-13也许,或XOR与一些值的所有字节,或甚至与一个与已知的种子值初始化的随机数发生器的异或值。在运行时,您将不得不从“混乱”版​​本重新生成所需的字符串。

的第二个问题:这个变量有可能出现在可执行文件的符号表,所以也许选择一个“沉闷”的名字为编码字符串一个有趣的名字。也许甚至可以将编码后的字符串埋在更长的字符串中。

正如其他人所指出的 - 有人会找到一个方法来撤消你的努力和查找的字符串,不管你做什么,但也许这些想法会帮助你。

祝你好运!