如何避免作弊引擎在运行时查看我的字符串

时间:2014-12-18 13:45:02

标签: c# .net anti-cheat cheat-engine

我正在玩CheatEngine并看到它可以在客户端应用程序中查看我的所有字符串。我想知道如何让作弊引擎在运行时看不到我的字符串。我尝试了我所知道的各种方法,但每当我有一个字符串CheatEngine可以查看它。我想阻止这种情况,或者至少CheatEngine可视化加密字符串。

2 个答案:

答案 0 :(得分:4)

你所要求的是非常难以正确完成的。

许多人会指出SecureString类可以用来保存内存安全的字符串。使用安全字符串时需要注意很多

  1. 您需要安全地创建。如果您已经有string,则可以通过循环遍历每个字符将其复制到SecureString中。但是,这并没有完成任何事情,因为原始字符串仍然存在。它可能会在以后收集垃圾,但垃圾收集并不意味着字符串的内存被清零。您可以使用不安全的代码或平台调用来将CLR中的字符串归零。但是,如果您的字符串被中断,您最终可能会破坏您的程序。
  2. 假设您能够安全地创建SecureString,并确保安全字符串的来源为零。你不能用SecureString 做很多<​​/ em>。很多API都不能用它们做任何事情。在某些时候,您需要将它们转换回普通的旧字符串,使用字符串,并将其归零。如果底层API 任何不安全,例如制作副本,那么您将无法知道副本的位置。在内存中存在普通旧字符串的那段短暂时间内,一个不断监视进程内存的引擎可以抓住它。
  3. 我真正在这里开车的是,保护进程的内存不受那些拥有管理权限的人的影响,或多或少是不可能的,.NET Framework使问题复杂化。 CLR旨在为您管理内存,这可能违背您对显式内存管理的需求。

答案 1 :(得分:2)

尝试使用SecureString类!

  

代表应保密的文字。文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除。这个类不能被继承。