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
software:win:dbg:savedata [2022/02/04 18:32]
– removed - external edit (Unknown date) 127.0.0.1
software:win:dbg:savedata [2022/02/05 04:38] (current)
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|}}\\
 +
 +
 +
 +{{tag>software howto windows debug}}
software/win/dbg/savedata.txt · Last modified: 2022/02/05 04:38 by root