我正在编写程序,将编码字符串加载到内存中并使用特殊算法解码。
程序工作序列:
- 从编码文件加载数据(
base64
string) - 解码
base64
字符串为编码数据字符串(Rijndael 256
) - 将编码的数据字符串(
Rijndael256
)解码为纯文本代码 - 运行代码并在数据结构中存储状态
- 从内存中删除纯文本
- …
问题是在sequence #3
中,如果用户创建程序内存转储,他可以获得纯文本的代码,这必须是安全的。我的问题是-有任何方法来保护我的纯文本字符串在内存?
程序用C++
编写。
大概在内存中需要纯文本,至少暂时需要,以便正确执行。如果,在那一点上,内存转储发生了,是的,他们可以访问它,不,你对此无能为力。保持纯文本尽可能短的时间会有帮助,以及"安全归零"记忆后,你完成了它。
不,没有任何方法来保护它-可能甚至OllyDbg都足以获得解码值(只是放置一个断点的问题,在此之后内存被归零或移动或其他无关紧要)。
你应该重新考虑你的安全模型