如何避免作弊引擎在运行时查看我的字符串
本文关键字:看我 我的 字符串 运行时 何避免 引擎 | 更新日期: 2023-09-27 18:34:40
我正在使用CheatEngine,看到它可以在客户端应用程序中查看我的所有字符串。我想知道我应该怎么做才能使作弊引擎在运行时看不到我的字符串。我尝试了我所知道的各种方法,但是每当我有一个字符串时,CheatEngine 都可以查看它。我想防止这种情况,或者至少 CheatEngine 可视化加密字符串。
你所要求的很难正确完成。
许多人会指出,SecureString
类可用于保持内存中的字符串安全。使用安全字符串有很多注意事项。
- 您需要安全地创建它。如果您已经有一个
string
,您可以通过循环访问每个字符将其复制到安全字符串中。但这并不能完成任何事情,因为原始字符串仍然存在。稍后可能会对其进行垃圾回收,但垃圾回收并不意味着字符串的内存为零。可以使用不安全的代码或平台调用将 CLR 中的字符串归零。但是,如果您的字符串被扣留,则最终可能会破坏您的程序。 - 假设您能够安全地创建
SecureString
,并确保安全字符串的源为零。你真的不能用SecureString
做太多事情.没有很多 API 可以用它们做任何事情。在某些时候,您需要将它们转换回普通的旧字符串,使用该字符串并将其归零。如果底层 API 执行任何不安全的操作,例如创建副本,那么您将无法知道副本的位置。在内存中存在普通旧字符串的短暂时间段内,持续监视进程内存的引擎可以获取它。
我在这里真正要推动的是,保护进程的内存免受对盒子具有管理权限的人或多或少是不可能的,而 .NET Framework 使这个问题复杂化。CLR 旨在为您管理内存,这可能与您显式内存管理的需求背道而驰。
尝试使用 SecureString 类!
表示应保密的文本。文本在使用时会加密以保护隐私,并在不再需要时从计算机内存中删除。此类不能继承。