Захват и освобождение заложников в исполняемых файлов

       

>>> Перечисление потоков


Как определить какие потоки содержаться внутри файла? Штатными средствами – никак! Функции работы с потоками недокументированны и доступы только через Native-API. Это: NtCreateFile, NtQueryEaFile и NtSetEaFile, описание которых можно найти в частности в книге "The Undocumented Functions Microsoft Windows NT/2000" Tomasz'а Nowak'а, электронная копия которой может быть бесплатно скачена с сервера NTinterlnals.net. А еще стоит почиать статью "Win2k.Stream" из 5'го номера вирусного журнала #29A, да и другие журналы пролистать не мешает.

Создания нового потока осуществляется вызовом функции NtCreateFile, среди прочих аргументов принимающей указатель на структуру FILE_FULL_EA_INFORMATION, передаваемый через EaBuffer. Как вариант, можно воспользоваться функцией NtSetEaFile, передав ей дескриптор, возращенный NtCreateFile, открывающей файл обычным образом. Перечислением (и чтением) всех имеющихся потоков занимается функция NtQueryEaFile. Прототипы всех функций и определения структур содержатся в файле NTDDK.H, в котором присутствует достаточное количество комментариев, чтобы со всем этим хозяйством можно было разобраться.



Содержание раздела