조사하고 채굴 중인 대용량 메모리 이미지(64GB 이상)가 있습니다. 너무 커서 메모리/vim에 로드할 수 없습니다. 관심 있는 측정 항목을 검색할 수 있도록 메모리 내 파일의 오프셋이 포함된 문자열을 실행하고 파일에 저장했습니다. 출력 예:
332327467 Washington1
332327514 Redmond1
332327536 Microsoft Corporation1
이러한 오프셋 중 하나를 얻고 메모리의 특정 영역을 인쇄하려면 어떻게 해야 합니까? 이상적으로는 +/- 10줄(메모리에 짝수 줄이 있는 경우)입니다. dd나 xxd가 이렇게 하는 것을 본 것 같은데 잘 모르겠습니다.
편집: 결국 내 성공적인 작업 흐름은 다음과 같습니다.
strings --radix=d mem.dump >> mem.asc
strings --radix=d -el mem.dump >> mem.uni
grep "blah" mem.asc *or* mem.uni
*grab offset from beginning of line*
dd if=mem.dump bs=1 skip=*offset here* count=100 | xxd
필요한 경우 오프셋에서 빼서 약간 뒤로 이동하고 필요한 경우 앞으로 이동하려면 count=를 변경합니다.
답변1
를 사용하려면 한 번에 읽기/쓰기 수(offset= * ) 를 dd
사용할 수 있습니다 . Count는 읽기/쓰기 횟수입니다. 예:skip=
bs
bs
skip
$ dd if=input of=output bs=1 skip=332327467 count=128