const / readonly与像Cheat Engine这样的程序

时间:2009-07-01 23:48:22

标签: c# memory const readonly

我有一个程序,在该程序中有一些变量(用户名和“权限级别”)只有在用户登录时才会更改。有没有办法在程序运行时从内存编辑等“保护”这些变量,但如果用户使用其他用户名登录,程序仍然可以更改它们。

我认为它可以工作(尚未测试)使用const或readonly,但是当用户重新登录时是否仍然可以更改它们?

此外,是否可以对程序中使用的字符串进行散列/加密,以便用户无法通过搜索内存(即使用Cheat Engine)找到它们?

3 个答案:

答案 0 :(得分:7)

如果软件和用户凭据在用户的计算机上运行,​​则无法阻止用户更改值。

如果凭据和访问权限存储在远程服务器上,则可以使用该服务器并让用户仅存储在任意时间段后过期的哈希标记。使用该标记作为查找,从服务器检索用户的配置文件信息。

您仍会遇到问题,因为客户端完成的任何操作都可以被操纵/攻击。如果您将所有逻辑保留在中央服务器上,那么您可以更加确信不会破坏某些内容,但系统的性能会受到影响。

您需要权衡中央服务器的优缺点,以确保安全性和性能,并选择最适合您的天平。

答案 1 :(得分:3)

您无法修改const(ever)或readonly(初始化后)变量,因此无效。

最佳选择可能是将创建/初始化/设置这些变量的逻辑包装到在登录过程中设置的clean方法和/或属性中。这将隔离该代码,因此至少很容易理解。

至于加密字符串 - 您可以使用SecureString在运行时处理该目的。在编译时,您可以对代码进行模糊处理(许多混淆器支持字符串加密)。

答案 2 :(得分:1)

没有可靠的方法。通过加密这些东西,你可以让它变得更难但永远不可能。最坏的情况是,用户可以附加调试器并直接更改内存。

相关问题