尝试从休眠文件还原时,我女友的Macbook崩溃了。进度条停在10%左右,之后我们重新启动计算机以进行正常启动。
此休眠的内存映像在Pages中打开了一个未保存的文档,我们希望对其进行恢复。有一个sleepimage
in /private/var/vm
,我认为它是从未正确还原的休眠映像。我们备份了这个东西以使其保持生命。
我们尝试过,strings sleepimage | grep known_substring
但是什么也没返回。grep -a known_substring sleepimage
也没有执行任何操作,因此我假设Pages不会将文本数据作为纯文本保留在内存中。
编辑:在我尝试对Binary grep阅读此答案后perl -ln0777e 'print unpack("H*",$1), "\n", pos() while /(null_padded_substring)/g' sleepimage
,再次没有结果。我用空值填充了它,以尝试匹配UTF-8文本。然后我尝试了.*
每个字符之间的问题–仍然没有骰子。
因此,Pages可能不会通过任何常见的编码在内存中存储文本。我需要找到ASCII字符串和Pages数据表示形式之间的转换规则-我在想也许是某种Objective C字符串缓冲区。在我看来,将字符数据存储为字符序列以外的其他东西似乎很奇怪,但这似乎是Pages所做的。
如果您对如何计算Pages中文本的内存表示形式有任何想法,则可能对解决此问题很有帮助。也许我可以用一些简单的方法转储和读取进程内存?
另一个可能的解决方案更简单-我假设可以通过某种方式重新启动计算机sleepimage
,但是我找不到任何有关如何进行此操作的文档。其他一些用户(微不足道的人)似乎也遇到了这种情况,但是对于我发现的所有论坛问题,他们都没有回应。
OS X版本是Snow Leopard,10.6.8。
欢迎涉及编程的复杂建议。我做C和Python。
谢谢。
sleepimage
。在另一个图像中筛选以查找唯一文本也很困难,因为该图像的大小仍为4GB,并且Pages内存块将在该文件中随机分配。我想我可以将RAM清零,然后打开页面,然后在sleepimage中查找非零序列。但是Pages会吃掉200MB的内存,这仍然是大海捞针。