不赞成休眠这种操作
1、并不是每个人的机器都会开启休眠这个功能的。如果没有开启休眠,手动启动休眠会写硬盘,这次只是碰巧能从内存 dump 找到密钥而已,找不到密钥很大程度上对硬盘做数据恢复可能还有点用,而休眠这种写硬盘的操作没准真就会让可以恢复出来的文件 gg 了。
2、在内存中找到密钥的条件太苛刻,对普通用户来说难以操作,这次是影响太大才会有这么多研究,没办法保证有这样能力的人次次都来帮助普罗大众。
3、CryptReleaseContext 这个函数不销毁 key,msdn 明确指出了
This function does not destroy key containers or key pairs.
objects should be destroyed with calls to CryptDestroyKey and CryptDestroyHash before CryptReleaseContext is called.
见 MSDN:
https://msdn.microsoft.com/en-us/library/aa380268.aspx从逆向的结果来看,可能是 WanaCry 的开发者在这方面有失误。
4、病毒代码正在执行过程中可能会发生任何事,就算病毒代码阻止关机,阻止休眠也是完全有可能的,虽然这个例子中不存在,但是不能否认这种可能性。如果感染这种病毒,也许直接拉电源会更有效。