首页 > 解决方案 > 是否可以限制ac#winforms应用程序的内存访问

问题描述

我的程序中存储了一些重要的字符串,但即使我混淆/保护程序集,人们也只是使用 ProcessHacker 或 CheatEngine 来扫描真正让我烦恼的字符串。有什么办法可以防止这种情况发生吗?

标签: c#stringmemoryprotection

解决方案


编译时加密和及时解密。需要大量的工作。它不需要是真正的加密,只需适当的混淆就足以阻止这种情况,但是字符串必须存在于内存中被混淆,并且每次使用后都需要销毁解密的字符串。

一些库将在初始运行时解密,但一个简单的内存转储或调试器将在进程或 DLL 加载后公开所有字符串。

您需要在运行时对其进行加密,并仅在需要字符串时对其进行解密,有很多方法可以解决这个问题。

这是我喜欢的 C++ 示例,它是更大项目的一部分https://github.com/red4000/DHCoD4/blob/master/DHCoD4/hCrypt.h#L53

对于 C#,这里有多个很好的答案


推荐阅读