读取另一个进程的内存并不是那么复杂,我怀疑是否有任何可靠的方法可以保护您的进程内存不被内存检查工具或具有专有技术的开发人员读取。
但是,有没有办法确定是否以及何时读取了进程的内存?
Windows和* nix风格答案的加分点。
答案 0 :(得分:1)
一般没有。几天前我只需要转储一个进程的完整内存,而我做的第一件事就是暂停应该转储的进程。由于已停止的进程无法控制其自身的重新启动,因此无法保证它可以继续运行,因此无法可靠地检查它是否已被转储。
有几种方法可供使用,特别是在复制保护区域,如加密内存地址,产生其他几个过程来保护orignial进程,以及其他一些技巧,但仅仅是这些:技巧。只要硬件没有完全加密所有内容并且在cpu本身内部没有其他人提供访问权限的情况下总是有一种方法来读取内存而不让cpu知道它(例如,Intels TPM是朝向这个方向的第一个) 。
E.g。在嵌入式设备中获取密码的一种可能攻击如下: 为了在ram中获取密码,设备被打开(运行时),dram芯片被冻结,然后连接到另一个设备(并且原件被关闭)。冻结状态允许芯片在不刷新的情况下保持其电子状态一段时间 - 足够的时间将它们连接到其他地方并随后读取所有内容。没有程序可以检测到这样的事情。唯一的方法是上面提到的:芯片本身的内容必须编码。