У меня есть огромный образ памяти, который я исследую и в котором копаюсь (64 ГБ+). Слишком большой для загрузки в память/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
Если вы хотите использовать dd
, вы можете использовать skip=
bs
— это сколько читать/писать за раз, offset= bs
* skip
. Count — это сколько раз читать/писать.
Пример:
$ dd if=input of=output bs=1 skip=332327467 count=128