Site Tools


software:win:dbg:savedata

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
software:win:dbg:savedata [2022/02/04 18:32]
– removed - external edit (Unknown date) 127.0.0.1
software:win:dbg:savedata [2022/02/04 18:59]
root
Line 1: Line 1:
 +====== Как вытащить не сохранённые данные из упавшего приложения Microsoft Windows ======
 +Бывает что пишешь текст, бац и ошибка в программе или программа просто перестала отвечать, до того как отправил/сохранил.\\
 +{{:software:dbg:extract1.png|}}\\
 +Набивать по новой - всегда мучение, особенно если не обладаешь исключительной памятью.
 +К счастью есть относительно простой способ вытащить свой текст.\\
 +
 +**Замечание**
 +DNSLookup.exe - моё приложение, пришлось специально его модифицировать чтобы вылетал при нажатии кнопки test.\\
 +Размер текста для извлечения тоже не ограничен, в этом примере всего одно слово только как демонстрация техники.\\
 +
 +===== Инструменты =====
 +Для вытаскивания текста потребуется OllyDBG и Far или Notepad++.\\
 +Особых навыков не требуется, достаточно быть уверенным пользователем.\\
 +Сам я сегодня впервые это сделал, обычно отлаживаю только свои проги.\\
 +Искушённых в отладке людей прошу не ругаться, метода описана доступным языком.\\
 +
 +===== Процедура извлечения =====
 +==== 1. Не закрываем приложение, пусть и дальше висит! ====
 +{{:software:dbg:extract2.png|}}
 +
 +==== 2. Подключаемся к приложению с помощью отладчика ====
 +Открываем **OllyDBG** и подключаемся к зависшему процессу: **File**, **Attach**\\
 +в столбике **name** ищем зависший процесс и нажимаем **Attach**.\\
 +{{:software:dbg:extract3.png|}}
 +
 +==== 3. Ищем нужный текст в памяти приложения ====
 +Меню - **Windows**, **2 Memory Map**.\\
 +В появившемся окне щёлкаем правой кнопкой мыши, в появившемся меню выбираем **Search**.\\
 +Появится окошко:\\
 +{{:software:dbg:extract4.png|}}\\
 +
 +В поле UNICODE вводим кусочек текста или цифры. Текст на русском у меня не искало. Хотя бы 3-4 символа, иначе будет много похожего.\\
 +
 +==== 4. Работаем с тем что найдено ====
 +{{:software:dbg:extract5.png|}}\\
 +
 +Если это не то что искали, то закрываем окошко **Dump** с найденным текстом, и в окошке **Memory Map** щёлкаем правой кнопкой и выбираем **Search Next**.\\
 +Если это то что мы искали, заветный текст то правой кнопкой, **Backup**, **Save data to file**.\\
 +
 +==== 5. Извлекаем сохранённый текст из дампа ====
 +Открываем сохранённый файл в Far / Notepad++, ищем текст из п 3.\\
 +{{:software:dbg:extract6.png|}}\\
 +
 +Перед поиском нужно убедится что Far/Notepad++ интерпретируют содержимое файла как UTF-16 Little endian.
 +(Shift + F8 в Far в режиме просмотра).\\
 +
 +Остаётся только выделить найденное и скопировать в более удобное место.\\
 +
 +===== Ограничения / особенности =====
 +  - Может потребоваться SeDebugPrivelege для пользователя который запускает OllyDbg. Можно запустить от имени пользователя который такую привилегию имеет, например от админа.\\
 +  - Я использовал OllyDbg х32, и приложения у меня были х32. Для зависшего х64 приложения может потребоваться х64 версия отладчика.\\
 +  - Notepad++ не всегда может правильно опознать кодировку и/или переключится на другую.\\
 +  - Если текст вводили в разные поля - скорее всего придётся повторять начиная с п3 до тех пор пока всё нужное не будет найдено и сохранено.\\
 +  - Для текстовых редакторов типа Word метод может не сработать, тк их внутреннее представление текста может быть отличным от UTF-16 Little endian.\\
 +  - UTF-16 Little endian - для юникодных программ, для старых ANSI.\\
 +  - В принципе можно за "вечер" написать утилиту которая будет сама всё делать, останется только выбрать процесс и какой фрагмент памяти и куда сохранить, просто случается не часто чтобы так автоматизировать.\\
 +  - Возможно OllyDbg и сама умеет показывать текст, и даёт его скопировать, но я ей пользоваться не умею потому действовал "по старинке" через Far.\\
 +  - Метод можно использовать против приложений которые не дают копировать текст, может повезти.\\
 +
 +===== Реальный случай =====
 +Вот как было в первый раз:\\
 +Пока готовил еду, кто то из браузеров сожрал всю память, экслорер и опера вылетели, фаерфокс с недописанным комментарием повис (скорее всего тоже не смог выделить память, но более корректно обработал ошибку выделения).\\
 +Вспомнить я смог только site-to-site.\\
 +{{:software:dbg:extract7.png|}}\\
  
software/win/dbg/savedata.txt · Last modified: 2022/02/05 04:38 by root