如何保持过程的记忆保护【JAVA教程】

!
也想出现在这里? 联系我们
信息

如何保持过程的记忆保护,第1张

概述如何保持过程记忆保护

我有一个过程,将在内存中有一些重要的价值。 我不希望任何人能够读取我的过程的记忆,并获得这些价值观。 所以我试图创build一个程序来查看正在运行的程序列表,并确定它们中的任何一个是否是“deBUGging程序”等。但是我意识到有人可以编写一个快速程序来转储我的进程的内存。 我知道我的系统上的几个进程有他们的记忆保护。 我怎么也能得到这个? (PS:我正在使用C#)

如何通过一个mmap映射内存指针来立即刷新写入?

在应用程序内禁用linux内存过量使用

在linux上直接从内核访问用户内存

BASH:检查安装在系统上的内存数量是否完整

不能在64位linux系统上用mmap / malloc / open等创build大于2GB的文件

在具有足够特权的用户(例如本地管理员)下运行的任何应用程序都可以随时调用ReadProcessMemory并随时读取您的进程,而无需连接到进程调试端口,也无需进行处理即可防止甚至检测这个。 而我甚至没有进入系统内核驱动程序可能做的事情…

最终,所有可以做到的解决方案都是蛇油,或者只是通过提高标准来混淆问题。 有些确实很难,但没有一个能够防止它。 但最终,不能隐藏任何具有物理访问权限的用户,并具有足够高的权限。

如果你不想让用户阅读某些东西,那么就不要在用户机器上。 使用一个服务模型,你的IP在服务器上,用户通过互联网访问(即Web服务)。

首先,总有一种方法可以转储程序的内存映像。 你的程序只能让它变得更难,不可能。 也就是说,可能有办法来“隐藏”价值。 通常认为难以做到,不值得麻烦,但有一些程序在内存中加密这些值。 但是,为了能够使用它们,需要暂时解密它们,然后再重新加密(或丢弃)。

虽然使用.Net框架加密很容易,但放弃解密的值在C#中并不是一件容易的事情。 在C中,您将分配一块内存来存储解密的值,并清除(通过写入零或随机数据),然后释放它。 在C#中,不保证你的数据不会被存储在某个地方(缓存,垃圾收集),你将无法清除它。 但是,正如eulerfx在评论中指出的那样,可以使用.Net 4.0 securestring 。 这是多么的安全,我不知道。

正如你所看到的那样,总是有一个短暂的时间,其价值在于未加密的内存,这就是这里的漏洞。

我认为最好的办法是采用商业解决方案,如pdf格式的手册 ,这是他们的网站 。 如果你真的关心保护应用程序免受嗅探,IP盗窃等,而不是卷起你自己的解决方案,你可能会更好的走下去的路线。

编辑: 我不会在开玩笑的路上走下去,我要制定的解决方案将是防篡改,防裂,防白痴 。 把它留给像我提到的阿尔山公司(我不是一个销售代表 – 我只是举一个例子),确定它可能是昂贵的,但是晚上你可以睡得更好,因为知道破解者要比破解更困难 根本没有解决方案 …

总结

以上是内存溢出为你收集整理的如何保持过程的记忆保护全部内容,希望文章能够帮你解决如何保持过程的记忆保护所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞86 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容