최대 절전 모드 파일에서 복원을 시도하는 동안 내 여자 친구의 Macbook이 충돌했습니다. 진행률 표시 줄이 ~ 10 %에서 멈춘 후 정상적인 시작을 위해 컴퓨터를 다시 시작했습니다.
이 최대 절전 모드 이미지에는 저장되지 않은 문서가 Pages에 열려 복구되어 있습니다. sleepimage
in 이 있는데 /private/var/vm
, 올바르게 복원되지 않은 최대 절전 모드 이미지라고 가정합니다. 우리는 이것을 살리기 위해 백업했습니다.
우리는 시도 strings sleepimage | grep known_substring
했지만 아무것도 반환하지 않았습니다. grep -a known_substring sleepimage
또한 아무것도하지 않았으므로 Pages가 텍스트 데이터를 메모리에 일반 텍스트로 유지하지 않았다고 가정합니다.
편집 : 이진 grep에 대한이 답변을 읽은 후에 perl -ln0777e 'print unpack("H*",$1), "\n", pos() while /(null_padded_substring)/g' sleepimage
다시 시도하지 않고 시도했습니다 . UTF-8 텍스트와 일치시키기 위해 null로 채워 넣었습니다. 그런 다음 나는 .*
각 캐릭터 사이의 글롭으로 시도했습니다 – 여전히 주사위는 없습니다.
따라서 Pages는 메모리에 일반적인 인코딩으로 텍스트를 저장하지 않을 것입니다. ASCII 문자열과 Pages 데이터 표현 사이의 변환 규칙을 찾아야합니다. 어쩌면 일종의 Objective C 문자열 버퍼라고 생각합니다. 나에게 문자 데이터를 일련의 문자 이외의 것으로 저장하는 것이 매우 이상해 보이지만 Pages 가하는 일 인 것 같습니다.
Pages 내부의 텍스트 내 메모리 표현을 이해하는 방법에 대한 아이디어가 있으면이 문제를 해결하는 데 매우 도움이 될 수 있습니다. 어쩌면 간단한 방법으로 프로세스 메모리를 덤프하고 읽을 수 있습니까?
또 다른 가능한 해결책은 더 간단합니다. 어떻게 든 컴퓨터를 재부팅 할 수 있다고 가정하고 sleepimage
있지만 어떻게 진행하는지에 대한 문서를 찾을 수 없습니다. 일부 다른 사용자 ( macrumors ) 가이 문제를 겪은 것으로 보이지만 내가 찾은 모든 포럼 질문에 대해서는 응답이 없습니다.
OS X 버전은 Snow Leopard, 10.6.8입니다.
프로그래밍과 관련된 복잡한 제안을 환영합니다. 나는 C와 Python을한다.
감사합니다.
sleepimage
. 이미지의 크기가 여전히 4GB이고 페이지 메모리 블록이 해당 파일에서 임의의 위치에 할당되므로 고유 한 텍스트를 찾는 다른 이미지를 살펴 보는 것도 어렵습니다. 그래도 RAM을 제로로 만든 다음 페이지를 연 다음 수면 이미지에서 0이 아닌 시퀀스를 찾을 수 있다고 가정합니다. 그러나 Pages는 건초 더미의 작은 바늘에 관계없이 200MB의 메모리를 소비합니다.