是否有可能在Delphi中"擦除"字符串?让我解释:
我正在编写一个包含DLL来授权用户的应用程序.它会将加密文件读入XML DOM,在那里使用信息,然后释放DOM.
很明显,未加密的XML仍然存在于DLL的内存中,因此容易受到检查.现在,我不会过分保护 - 用户可以创建另一个DLL - 但我想采取一个基本步骤来防止用户名在内存中存放多年.但是,由于引用,我认为我无论如何都不能轻易擦除内存.如果我遍历我的DOM(这是一个TNativeXML类)并找到每个字符串实例,然后将它变成类似"aaaaa"的东西,那么它实际上不会将新的字符串指针分配给DOM引用,然后保留旧的字符串在内存中等待重新分配?有没有办法确定我要杀死唯一的原始副本?
或者在D2007中是否有一种方法可以告诉它从堆中擦除所有未使用的内存?所以我可以释放DOM,然后告诉它擦除.
或者我应该继续我的下一个任务而忘记这一点因为它真的不值得打扰.
我不认为值得烦恼,因为如果用户可以使用DLL读取进程的内存,同一个用户也可以在任何给定的时间点停止执行.在擦除内存之前暂停执行仍将使用户可以完全访问未加密的数据.
IMO任何对你所描述的内容足够感兴趣且能够做你所描述的用户都不会因你的DLL擦除内存而感到严重不便.