Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Как прочитать файлы, заблокированные операционной системой Windows

21.02.2019 | Категория: Software | Автор: ManHunter

Как прочитать файлы, заблокированные операционной системой Windows

В целях безопасности некоторые файлы и каталоги в системе Windows защищены от несанкционированного доступа. И будь вы хоть трижды администратором на своем компьютере, при работающей системе вы не сможете их открыть даже для просмотра, не говоря уже о внесении каких-либо изменений. К таким файлам относятся файлы подкачки pagefile.sys и hiberfile.sys, файлы реестра, папки с данными точек восстановления. Для чего это нужно? Ну, например, при помощи специальных инструментов из файла подкачки можно попытаться извлечь сохраненные в памяти пароли от криптоконтейнеров (Passware Kit Forensic), а из файлов реестра - логины и пароли учетных записей пользователей (SamInside).

Читать статью целиком »
Просмотров: 812 | Комментариев: 5

Как получить имя файла, зная его Handle

29.01.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter
В одной программе у меня появилась необходимость получить имя открытого файла, когда известен его хэндл. Полазив по этим вашим интернетам, я нашел немало решений этой задачи, в основном бездумно скопированных с одного сайта на другой. Пришлось разбираться и систематизировать все самому. Итак, самый простой и приятный способ, чтобы получить имя файла по его хэндлу - использовать функцию GetFinalPathNameByHandle.
  1.         ; Получить имя файла по его хэндлу
  2.         invoke GetFinalPathNameByHandle,[hFile],lpName,MAX_PATH,0
На вход подаем хэндл открытого файла, на выходе получаем полный путь к нему. Красота! Но, к сожалению, этот способ работает только на Windows Vista и более новых системах. Если вашему приложению требуется поддержка Windows XP, то придется проверять наличие этой функции в экспорте библиотеки kernel32. Для старых систем есть другой способ. Открытый файл проецируется в память с помощью функций CreateFileMapping и MapViewOfFile, затем с помощью функции GetMappedFileName можно узнать полный путь к спроецированному файлу:
  1.         ; Создать проекцию файла
  2.         invoke  CreateFileMapping,[hFile],NULL,PAGE_READONLY,0,1,NULL
  3.         mov     [hFileMap],eax
  4.         invoke  MapViewOfFile,[hFileMap],FILE_MAP_READ,0,0,1
  5.         mov     [pMem],eax
  6.  
  7.         ; Получить имя спроецированного файла
  8.         invoke  GetCurrentProcess
  9.         invoke  GetMappedFileName,eax,[pMem],lpName,MAX_PATH
  10.  
  11.         ; Прибраться за собой
  12.         invoke  UnmapViewOfFile,[pMem]
  13.         invoke  CloseHandle,[hFileMap]
Имя носителя в строке пути записывается в виде "\Device\HarddiskVolume1", для приведения его к более привычному виду надо пройтись по всем доступным буквам дисков, установленных в системе, каждую преобразовать в имя устройства и сравнить с именем устройства в пути к файлу. Для облегчения операции преобразования символических ссылок я нарисовал отдельную функцию. Способ с проецированием файла неплохой, но у него есть один существенный недостаток: проецирование не работает с файлами нулевой длины. Например, вы не сможете получить имя вновь созданного пустого файла, тогда как функция GetFinalPathNameByHandle прекрасно справляется с этой задачей.

Читать статью целиком »
Просмотров: 595 | Комментариев: 3

Что скрывают ярлыки?

26.01.2019 | Категория: Software | Автор: ManHunter

Что скрывают ярлыки?

Как гласят толковые словари, форенсика - современная наука о раскрытии инцидентов, связанных с компьютерной информацией, исследовании цифровых доказательств, методах поиска, получения и закрепления таких доказательств. И действительно, невероятно сложно удалить все следы работы за компьютером, чтобы профессионал не смог их обнаружить. Сегодня я покажу вам, что скрывают такие, на первый взгляд, безобидные объекты, как ярлыки недавно открытых документов.

Читать статью целиком »
Просмотров: 1116 | Комментариев: 7

Как в .BAT-файле записать текстовую строку в файл без символов переноса строки

05.11.2018 | Категория: Software | Автор: ManHunter
При всей своей кажущейся простоте, пакетные файлы обладают очень мощным функционалом. Вплоть до того, что на .BAT-файлах можно писать полиморфные вирусы. Но, как и в любой околокомпьютерной сфере, тут не обошлось без своих заморочек. Одна из них заключается в том, что при перенаправлении вывода в файл командой echo в созданный файл принудительно добавляется перенос строки. Вроде бы так и надо, но если вам надо сформировать какую-нибудь команду или непрерывную строку для дальнейшего использования, то было бы неплохо сделать так, чтобы символ переноса строки не добавлялся. Сделать это можно, используя другую команду:

<nul set /p tmpstr=текст>file.txt
В такой реализации в перенаправляемый файл будет записана текстовая строка без лишних символов переноса строки. При этом формируемую строку в любой момент можно дополнять командой типа:

<nul set /p tmpstr=другой_текст>>file.txt
В этом случае перенос строки также не добавляется. Когда необходимый паттерн будет сформирован, но при этом надо перейти к новой строчке, вывод текущей строки в файл можно завершить уже известной вам командой echo.

Просмотров: 765 | Комментариев: 3

Получение данных из консольного окна другого приложения

02.11.2018 | Категория: Образ мышления: Assembler | Автор: ManHunter
Мы уже умеем перехватывать ввод и вывод консольных приложений, но этот способ работает только для тех процессов, которые мы сами запустили. Но иногда надо получать информацию из консольных приложений, которые уже были запущены в системе или могут быть запущены в дальнейшем, но не нами. А еще бывают консольные приложения, вывод которых невозможно перенаправить и, соответственно, невозможно получить описанным ранее способом. Для них также придется использовать способ из этой статьи.

Для начала как всегда несколько структур, которые изначально не описаны в FASM. Они нам понадобятся для работы с консольным окном:
  1. struct  COORD
  2.         X dw ?
  3.         Y dw ?
  4. ends
  5.  
  6. struct  SMALL_RECT
  7.         Left   dw ?
  8.         Top    dw ?
  9.         Right  dw ?
  10.         Bottom dw ?
  11. ends
  12.  
  13. struct CONSOLE_SCREEN_BUFFER_INFO
  14.         dwSize              COORD
  15.         dwCursorPosition    COORD
  16.         wAttributes         dw ?
  17.         srWindow            SMALL_RECT
  18.         dwMaximumWindowSize COORD
  19. ends
Теперь немного теории. Любое приложение, даже GUI, может создать собственную консоль или приаттачиться к уже существующей. Для аттача достаточно знать только идентификатор консольного процесса. После этого получаем стандартный хэндл вывода, используемый в этой консоли, параметры консольного окна (количество строк и столбцов), а потом единственной функцией ReadConsoleOutputCharacter забираем из консольного окна все содержимое.

Читать статью целиком »
Просмотров: 384 | Комментариев: 0

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2019
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.11 сек. / MySQL: 3 (0.0421 сек.) / Память: 4.75 Mb
Наверх