警告:C ++ noob
我在StackOverflow上阅读了关于字符串加密的多篇帖子。顺便说一句,他们没有回答我的疑虑。 我必须在我的代码中插入一个或两个硬编码字符串,但我想在调试/逆向工程时以纯文本读取困难。这不是全部:我的字符串是URL,所以一个简单的数据包分析器(Wireshark)可以读取它。 我说很难,因为我知道,当代码运行时,字符串在某处(在RAM中?)解密为纯文本,有人可以读取它。因此,假设不可能完全保护我的字符串,那么在C ++中加密/解密它的最佳方法是什么? 我在考虑这样的事情:
//I've omitted all the #include and main stuff of course...
string encryptedUrl = "Ajdu67gGHhbh34590Hb6vfu6gu" //Encrypted url with some known algorithm
URLDownloadToFile(NULL, encryptedUrl.decrypt(), C:\temp.txt, 0, NULL);
分组分析怎么样?我确定没有办法隐藏URL,但也许我错过了什么?谢谢你,对不起我最糟糕的英语!
编辑1:我的应用程序做了什么?
这是一个简单的登录脚本。我的应用程序从URL下载文本文件。此文件包含使用fstream库读取的加密字符串。然后解密该字符串并用于在另一个站点上登录。它非常弱,因为没有数据库,没有盐,没有散列。我的成就是确保url和登录字符串都不容易从二进制文件的静态分析中读取,并且可能通过动态分析(调试,逆向工程等)尽可能地难以读取。
答案 0 :(得分:5)
如果您想阻止数据包检查员,最低要求是使用带有硬编码服务器证书的https加入您的应用程序。
加密应用内内容并非灵丹妙药。无论你做什么,具有合适技能的坚定黑客都会获得简单的网址。你可以期待的最好的事情是让大多数人放弃的困难。实现此目的的方法是实现多种不同的混淆和绊线技术。包括但不限于:
这只是冰山一角,只会让新手脱离气味。它不会阻止甚至显着减慢一个熟练的攻击者,他只会使用隐形调试器拦截对SSL库的调用。因此,你必须问自己:
答案 1 :(得分:0)