在具有足够特权的用户(例如本地管理员)下运行的任何应用程序都可以随时调用ReadProcessMemory并随意读取您的进程,而无需附加到您的进程调试端口,并且您的处理无法阻止甚至检测这个.我甚至没有进入系统内核驱动程序的可能性......
最终,所有可用的解决方案都是蛇油,或者只是通过提高标准以使其变得更难来混淆问题.有些确实让它变得非常困难,但没有一个能让它成为防弹.但最终,人们无法向具有物理访问权限并且具有足够提升权限的用户隐藏任何内容.
如果您不希望用户阅读某些内容,则只需在用户计算机上没有.使用服务模型,其中您的IP在服务器上,用户通过互联网访问它(即Web服务).
首先,总会有一种方法来转储程序的内存映像.你的程序只能让它变得更难,永远不可能.也就是说,可能有办法"隐藏"价值观.它通常被认为很难做,不值得麻烦,但有些程序可以在内存中加密这些值.但是,为了能够使用它们,它们需要临时解密它们并在之后重新加密(或丢弃)它们.
虽然使用.Net框架加密很容易,但在C#中丢弃解密的值并不容易.在C中,您将分配一块内存来存储解密的值,并在释放之前清除(通过向其写入零或随机数据).在C#中,无法保证您的数据不会存储在某处(缓存,垃圾收集),您将无法清除它.但是,正如eulerfx在评论中指出的那样,可以使用.Net 4.0 SecureString.这是多么安全,我不知道.
正如您所看到的,总会有一个短暂的时间,其中值在未加密的内存中,这就是此处的漏洞.
| 归档时间: |
|
| 查看次数: |
2019 次 |
| 最近记录: |