1

读取另一个进程的内存并不复杂,我怀疑是否有任何可靠的方法可以保护您的进程的内存不被内存检查工具或具有专业知识的开发人员读取。

但是,有什么方法可以确定您的进程的内存是否以及何时被读取?


Windows 和 *nix 风格答案的奖励积分。

4

1 回答 1

2

一般来说没有。几天前我只需要转储一个进程的完整内存,我做的第一件事就是暂停应该转储的进程。由于停止的进程无法控制自己的重新启动,因此无法保证它之后可以继续,因此无法可靠地检查它是否被转储。

有几种方法被使用,特别是在复制保护区域,比如加密内存地址,产生几个其他进程来保护原始进程,以及其他一些技巧,但仅此而已:技巧。只要硬件没有完全加密所有内容并且在 cpu 本身内部进行而没有任何其他人对其进行访问,那么总有一种方法可以在不让 cpu 知道的情况下读取内存(例如 intels TPM 是第一个朝这个方向发展的) .

例如,在嵌入式设备中获取密码的一种可能攻击如下:为了在 ram 中获取密码,设备被打开(运行时),DRAM 芯片被冻结,然后连接到不同的设备(原始设备被关闭)。冻结状态允许芯片在不刷新的情况下将其电状态保持更长的时间 - 有足够的时间将它们连接到其他地方并随后读取所有内容。没有程序可以检测到这样的事情。唯一的办法是上面提到的:芯片本身的内容必须被编码。

于 2013-06-14T09:06:13.583 回答