【问题标题】:Is it possible to restrict memory access of a c# winforms application是否可以限制 c# winforms 应用程序的内存访问
【发布时间】:2019-04-22 06:03:14
【问题描述】:

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

【问题讨论】:

  • @TheGeneral there are plenty of approaches 你能说出一两个我有同样问题的我尝试编码并保存在数据库中无法停止。从服务器检查无法停止
  • 链接更多是关于asp.net core,但提供了大致思路:docs.microsoft.com/en-us/aspnet/core/security/…
  • 在你需要它们之前保持你的字符串混淆,然后按需去混淆它们怎么样?当然,他们可能会使用上述收费之一来获取您的密钥,但他们还需要知道正在使用什么加密。

标签: c# string memory protection


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 2021-10-29
    • 2015-08-25
    • 2014-11-29
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多