1

我试图避免文字字符串出现在可执行文件中。我想将一个加密的字符串放在可执行文件中,然后在运行时解密并使用它。我读了一点如何隐藏二进制代码中的字符串?http://bytes.com/topic/c/answers/222096-hiding-string-compiled-code,但这并不是我想要的。

可以使用宏来完成吗?例如,我可以使用声明一个宽字符字符串

wchar_t str[] = L"value"    

或者

wchar_t *str = L"value"    

神奇L的会将字符转换为宽字符。是否有可能创造另一个L像这样的魔法来制作加密字符串?例如:

ENC"value"    

目前我将已经加密的字符串定义为宏:

#define SAMPLE_STRING "ftnurd eru etrth" /*Random chars for imitating encryption*/   

并将它们传递给一个正常的函数,比如

char *decstr(char *data)    

有没有更简单的方法来做到这一点?

我正在使用带有 Visual C++ 2008 Express 的 Windows XP SP3。

4

1 回答 1

1

为什么不简单地创建一个加密和解密函数呢?然后你可以写类似

char *hidden_password = my_encrypt("pAsSw0rd");
puts(hidden_pasword); // "aCud5Ttei23w8D"
// ...
char *real_password = my_decrypt("aCud5Ttei23w8D");
puts(real_password); // "pAsSw0rd"

但是,如果硬连线文本字符串包含敏感数据,则将其存储在可执行文件中并不是一个好主意。此外,不要重新发明轮子——在推出自己的加密方法之前,请尝试一些成熟的、高质量的、加密安全的库,如OpenSSL

于 2013-08-23T20:56:27.923 回答