我正在玩CheatEngine并看到它可以在客户端应用程序中查看我的所有字符串。我想知道如何让作弊引擎在运行时看不到我的字符串。我尝试了我所知道的各种方法,但每当我有一个字符串CheatEngine可以查看它。我想阻止这种情况,或者至少CheatEngine可视化加密字符串。
答案 0 :(得分:4)
你所要求的是非常难以正确完成的。
许多人会指出SecureString
类可以用来保存内存安全的字符串。使用安全字符串时需要注意很多。
string
,则可以通过循环遍历每个字符将其复制到SecureString中。但是,这并没有完成任何事情,因为原始字符串仍然存在。它可能会在以后收集垃圾,但垃圾收集并不意味着字符串的内存被清零。您可以使用不安全的代码或平台调用来将CLR中的字符串归零。但是,如果您的字符串被中断,您最终可能会破坏您的程序。SecureString
,并确保安全字符串的来源为零。你不能用SecureString
做很多</ em>。很多API都不能用它们做任何事情。在某些时候,您需要将它们转换回普通的旧字符串,使用字符串,并将其归零。如果底层API 任何不安全,例如制作副本,那么您将无法知道副本的位置。在内存中存在普通旧字符串的那段短暂时间内,一个不断监视进程内存的引擎可以抓住它。我真正在这里开车的是,保护进程的内存不受那些拥有管理权限的人的影响,或多或少是不可能的,.NET Framework使问题复杂化。 CLR旨在为您管理内存,这可能违背您对显式内存管理的需求。
答案 1 :(得分:2)
尝试使用SecureString类!
代表应保密的文字。文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除。这个类不能被继承。