我正在开发一个包含大量日志记录的C ++应用程序,我注意到从Windows进程管理器打开二进制文件时,日志消息中的字符串以纯文本显示。这可能会揭示应用程序背后的逻辑,或至少显示使用数学公式的函数名称。
我正在研究在这种情况下该做什么的替代方案,我想在记录器中使用字符串类,在编译时将std :: wstring参数转换为十六进制数组(如果可能的话),但是我对其他类型的解决方案感兴趣。
有没有习惯的方法来解决这个问题?我对模板的了解并不是很广泛,所以我觉得我不能在这条路上做出明智的决定......
另外,C ++是不是编译成机器代码?如何在.exe中看到这些字符串?
答案 0 :(得分:1)
在您的应用程序中使用加密字符串。在应用程序逻辑中使用它们(例如显示它们)之前,必须先对它们进行解密。
非常简单\快速加密(但不安全)是将字符串声明为字符数组,数组类型为int
而不是char
。
int helloString[] = { 'H', 'e', 'l', 'l', 'o' };
您可以使用自己强大的加密算法构建一些简单的工具来将字符串转换为数组。
答案 1 :(得分:0)
你可以有一个包含其中每个文本的xml文件。
这样,您只需要在初始化期间打开文件,将所有内容放在内存中即可。您将从代码中调用变量而不是字符串,在可执行文件中不会显示任何内容。
要防止对xml文件进行任何更改,可以使用MD5哈希对其进行验证。
另一方面,您可以对字符串使用加密技术。加密的问题在于,您需要将密钥放在某处解密。