[PluginRequest] WDX для подсветки исполняемых файлов .net
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
[PluginRequest] WDX для подсветки исполняемых файлов .net
Уважаемые программисты, насколько трудно написать wdx плагин, определяющий, является ли исполняемый файл дотнетовским? Логика работы примерно такая:
// возвращаемое поле, например, PEType
если (первые два байта - MZ) то {
если (файл содержит текст "mscoree.dll") то {
возвращаем "dotNet"
} иначе возвращаем "Win32/64"
} иначе пропускаем (возвращаем пустую строку)
А если он ещё и x64 от x32 отличить сумеет - цены ему не будет.
// возвращаемое поле, например, PEType
если (первые два байта - MZ) то {
если (файл содержит текст "mscoree.dll") то {
возвращаем "dotNet"
} иначе возвращаем "Win32/64"
} иначе пропускаем (возвращаем пустую строку)
А если он ещё и x64 от x32 отличить сумеет - цены ему не будет.
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить. Уточни, в чём именно у тебя тут был затык.
Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита? Вроде бы, с точки зрения PE-формата он остаётся 32-битным.
Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита? Вроде бы, с точки зрения PE-формата он остаётся 32-битным.
Почему же, ё-моё, ты нигде не пишешь "ё"?
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
На счёт скриптовых технологий есть опасение по части тормозов, а не хотелось бы.CaptainFlint писал(а):Думаю, это можно сделать даже на script_wdx.
Не специалист, но визуально (в hex) эта библиотека упомянута несколько отдельно, это может оказаться не секция импортов.CaptainFlint писал(а):Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить.
Не понял, что надо уточнить. По предложенным плагинам я отписался. Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил. Текущую проблему решить можно, если запустить на ночь, а как рабочий инструмент...CaptainFlint писал(а):Уточни, в чём именно у тебя тут был затык.
Не-не-не, я имел в виду следующие варианты экспертных заключений плагина: dotNet, Win32, Win64, noPE. Возвращаемые значения значения не имеют (CaptainFlint писал(а):Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита?
Попробуй написать автору http://wincmd.ru/plugring/peviewer.html
- для него сделать Wdx plugin не трудно?
- для него сделать Wdx plugin не трудно?
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Alextp
Логика такая:
Добавлено спустя 5 минут:
К тому же, Ваш плагин маленький и шустрый.
Логика такая:
- Ваш плагин предназначен не столько для показа какой-то информации, сколько для детектирования файлов, удовлетворяющих определённому условию.
- Основной способ использования Вашего плагина - раскраска файлов и поиск с плагинами, а не создание колонок.
- Группы файлов "занят" и "юникодные" логически не особо связаны друг с другом.
Добавлено спустя 5 минут:
К тому же, Ваш плагин маленький и шустрый.
А как эту секцию предлагается искать скриптом?CaptainFlint писал(а):Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll
Весьма сомнительная оценка необходимости действий контентного плагина. Не вижу смысла таким способом окрашивать файлы. Колонки наравне со всплывающими подсказками, по мне, - самое что ни на есть очевидное для использования подобных инфоплагинов.Serge Yolkin писал(а):раскраска файлов и поиск с плагинами, а не создание колонок.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Если собрать в виде экзешника это, можно будет скрипту скармливать...
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Вики:Serge Yolkin писал(а):Не специалист, но визуально (в hex) эта библиотека упомянута несколько отдельно, это может оказаться не секция импортов.
In a .NET executable, the PE code section contains a stub that invokes the CLR virtual machine startup entry
Я имел в виду фразу:Serge Yolkin писал(а):Не понял, что надо уточнить.
Там не надо ничего визуально распознавать. Надо просто посмотреть определения заголовков и пройти по цепочке смещений внутри EXE-файла. Соответственно, скриптом это делается не сложнее, чем плагином.Вроде, там после заголовка exe ещё заголовок среды исполнения идти должен, только визуально я его не распознал. Скрипт бы написал, и дело с концом.
А, понятно. Ну, битность можно ExeFormat'ом различать. Впрочем, если писать плагин или скрипт с самостоятельным разбором заголовков, то добавить определение архитектуры очень просто.Serge Yolkin писал(а):Не-не-не, я имел в виду следующие варианты экспертных заключений плагина: dotNet, Win32, Win64, noPE.
Я говорил не про самостоятельный скрипт, а про script_wdx. Искать так же, как и не-скриптовым плагином: считать заголовки файла, разобрать их и считать из файла данные по найденным смещениям.Flasher писал(а):А как эту секцию предлагается искать скриптом?
Я, к сожалению, не помню структуру PE настолько подробно, чтобы сходу выложить готовую цепочку переходов, но в интернете информации полно, в том числе с примерами кода.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Плагин сам ничего искать не может. Он только подхватывает имена файлов и возвращает полученные скриптом значения.CaptainFlint писал(а):Я говорил не про самостоятельный скрипт, а про script_wdx.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Так в этом-то и суть вопроса была, чтобы понять, откуда мысль родилась:CaptainFlint писал(а):пусть выполняет всю работу по открытию файла и чтению нужных байтиков.
Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься.CaptainFlint писал(а):скриптом это делается не сложнее, чем плагином
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
MVV
Код по приведенной Вами ссылке тоже дотнетовский. Не то, чтобы фатально, но крайне нежелательно.
Зато там заголовок довольно подробно описан:
Добавлено спустя 13 минут:
Код по приведенной Вами ссылке тоже дотнетовский. Не то, чтобы фатально, но крайне нежелательно.
Зато там заголовок довольно подробно описан:
и картинка естьСтруктура PE содержит заголовки разделов данных. PE заголовки содержат заголовки NT (IMAGE_NT_HEADERS в WinNT.h), в которых инкапсулированы необязательные заголовки (IMAGE_OPTIONAL_HEADER в WinNT.h). Необязательный заголовок имеет массив записей IMAGE_DATA_DIRECTORY, называется DataDirectory. Запись IMAGE_DATA_DIRECTORY указывает фактическое расположение данных в PE-файле (так называемый модуль загрузки). Запись, в которой вы заинтересованы является индексом IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR. Эта запись указывает на данные .NET. Если эта запись существует и поле VirtualAddress указывает на действительную область в рамках одной из последующих секций, это означает, что компонент является управляемым.
Добавлено спустя 13 минут:
CaptainFlint писал(а):пусть выполняет всю работу по открытию файла и чтению нужных байтиков.
"распространять в комплекте с седуксеном..."Serge Yolkin писал(а):Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил.
- CaptainFlint
- Сообщения: 6239
- Зарегистрирован: Вт дек 14, 2004 22:34
- Контактная информация:
Нет, никаких API нет. Вернее, может, и есть, но я о них не слышал. Обычно PE-формат разбирается вручную, структура заголовков документирована. Просто считывается блок данных фиксированного размера, по определённому смещению из него берётся число, это число задаёт новое смещение внутри файла для следующего заголовка и т.д.Flasher писал(а):Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься.
Если болванка скрипта выполняла тупой поиск подстроки во всём содержимом файла, то, разумеется, будет тормозить. Я потому и говорю про чтение и разбор заголовков, чтобы сразу прыгать на нужное смещение, а не перебирать весь двоичный мусор (в котором, к тому же, могут найтись сигнальные строки и дать ложное срабатывание).Serge Yolkin писал(а):Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил.
Почему же, ё-моё, ты нигде не пишешь "ё"?