c# - 是否可以限制ac#winforms应用程序的内存访问
问题描述
我的程序中存储了一些重要的字符串,但即使我混淆/保护程序集,人们也只是使用 ProcessHacker 或 CheatEngine 来扫描真正让我烦恼的字符串。有什么办法可以防止这种情况发生吗?
解决方案
编译时加密和及时解密。需要大量的工作。它不需要是真正的加密,只需适当的混淆就足以阻止这种情况,但是字符串必须存在于内存中被混淆,并且每次使用后都需要销毁解密的字符串。
一些库将在初始运行时解密,但一个简单的内存转储或调试器将在进程或 DLL 加载后公开所有字符串。
您需要在运行时对其进行加密,并仅在需要字符串时对其进行解密,有很多方法可以解决这个问题。
这是我喜欢的 C++ 示例,它是更大项目的一部分https://github.com/red4000/DHCoD4/blob/master/DHCoD4/hCrypt.h#L53
对于 C#,这里有多个很好的答案
推荐阅读
- spring - spring cloud contract gradle 每次都运行测试
- python - 从文件中绘制日期与时间
- python - AttributeError:模块“pandas”没有属性“rolling_mean”
- woocommerce - archive.php 看起来与模板不同
- javascript - 如何将此数组映射到嵌套对象树?
- python - DL 中的 ValueError
- reactjs - 开玩笑:如何测试作为匿名函数的道具?
- javascript - 如何在不声明引用它的变量的情况下访问 JSON 文件
- android - 按钮位于其下方定义的布局下
- android - 打开和关闭 Activity 时内存堆大小不断增加