[PluginRequest] WDX для подсветки исполняемых файлов .net
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3, 4  Next  :| |:
Total Commander -> Плагины Total Commander

#1: [PluginRequest] WDX для подсветки исполняемых файлов .net Author: Serge Yolkin PostPosted: Sat Sep 14, 2013 01:06
    —
Уважаемые программисты, насколько трудно написать wdx плагин, определяющий, является ли исполняемый файл дотнетовским? Логика работы примерно такая:
// возвращаемое поле, например, PEType
если (первые два байта - MZ) то {
если (файл содержит текст "mscoree.dll") то {
возвращаем "dotNet"
} иначе возвращаем "Win32/64"
} иначе пропускаем (возвращаем пустую строку)

А если он ещё и x64 от x32 отличить сумеет - цены ему не будет.

#2:  Author: CaptainFlintLocation: Москва PostPosted: Sat Sep 14, 2013 11:44
    —
Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить. Уточни, в чём именно у тебя тут был затык.

Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита? Вроде бы, с точки зрения PE-формата он остаётся 32-битным.

#3:  Author: Serge Yolkin PostPosted: Sat Sep 14, 2013 13:52
    —
CaptainFlint wrote:
Думаю, это можно сделать даже на script_wdx.
На счёт скриптовых технологий есть опасение по части тормозов, а не хотелось бы.
CaptainFlint wrote:
Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить.
Не специалист, но визуально (в hex) эта библиотека упомянута несколько отдельно, это может оказаться не секция импортов.
CaptainFlint wrote:
Уточни, в чём именно у тебя тут был затык.
Не понял, что надо уточнить. По предложенным плагинам я отписался. Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил. Текущую проблему решить можно, если запустить на ночь, а как рабочий инструмент...
CaptainFlint wrote:
Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита?
Не-не-не, я имел в виду следующие варианты экспертных заключений плагина: dotNet, Win32, Win64, noPE. Возвращаемые значения значения не имеют ( Very Happy ), хоть 1-2-3-4. Лишь бы можно было различить.

#4:  Author: Alextp PostPosted: Sat Sep 14, 2013 16:10
    —
Попробуй написать автору http://wincmd.ru/plugring/peviewer.html
- для него сделать Wdx plugin не трудно?

#5:  Author: Serge Yolkin PostPosted: Sat Sep 14, 2013 16:22
    —
Alextp
Вариант. Но ещё немного подожду. Может, кто создаст нечто маленькое и шустрое, а то PE Viewer слегка избыточен для этой цели.
Может, я не прав, но логичнее было бы добавить такой функционал в UnicodeTest/LockedTest Smile

#6:  Author: Alextp PostPosted: Sat Sep 14, 2013 16:25
    —
Почему логичнее. нет не логичнее. Он не предназначен для рзбора форматов файлов
И я не знаю, как это делать

#7:  Author: Serge Yolkin PostPosted: Sat Sep 14, 2013 17:01
    —
Alextp
Логика такая:
  1. Ваш плагин предназначен не столько для показа какой-то информации, сколько для детектирования файлов, удовлетворяющих определённому условию.
  2. Основной способ использования Вашего плагина - раскраска файлов и поиск с плагинами, а не создание колонок.
  3. Группы файлов "занят" и "юникодные" логически не особо связаны друг с другом.
Вот я и подумал, что добавить в него распознование ещё одной-двух групп файлов было бы логично, но нет - так нет.

Добавлено спустя 5 минут:

К тому же, Ваш плагин маленький и шустрый.

#8:  Author: FlasherLocation: Москва PostPosted: Sat Sep 14, 2013 17:41
    —
CaptainFlint wrote:
Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll
А как эту секцию предлагается искать скриптом?

Serge Yolkin wrote:
раскраска файлов и поиск с плагинами, а не создание колонок.
Весьма сомнительная оценка необходимости действий контентного плагина. Не вижу смысла таким способом окрашивать файлы. Колонки наравне со всплывающими подсказками, по мне, - самое что ни на есть очевидное для использования подобных инфоплагинов.

#9:  Author: MVVLocation: Ростов-Дон PostPosted: Sat Sep 14, 2013 17:55
    —
Если собрать в виде экзешника это, можно будет скрипту скармливать...

#10:  Author: CaptainFlintLocation: Москва PostPosted: Sat Sep 14, 2013 19:48
    —
Serge Yolkin wrote:
Не специалист, но визуально (в hex) эта библиотека упомянута несколько отдельно, это может оказаться не секция импортов.

Вики:
Quote:
In a .NET executable, the PE code section contains a stub that invokes the CLR virtual machine startup entry


Serge Yolkin wrote:
Не понял, что надо уточнить.

Я имел в виду фразу:
Quote:
Вроде, там после заголовка exe ещё заголовок среды исполнения идти должен, только визуально я его не распознал. Скрипт бы написал, и дело с концом.

Там не надо ничего визуально распознавать. Надо просто посмотреть определения заголовков и пройти по цепочке смещений внутри EXE-файла. Соответственно, скриптом это делается не сложнее, чем плагином.

Serge Yolkin wrote:
Не-не-не, я имел в виду следующие варианты экспертных заключений плагина: dotNet, Win32, Win64, noPE.

А, понятно. Ну, битность можно ExeFormat'ом различать. Впрочем, если писать плагин или скрипт с самостоятельным разбором заголовков, то добавить определение архитектуры очень просто.


Flasher wrote:
А как эту секцию предлагается искать скриптом?

Я говорил не про самостоятельный скрипт, а про script_wdx. Искать так же, как и не-скриптовым плагином: считать заголовки файла, разобрать их и считать из файла данные по найденным смещениям.

Я, к сожалению, не помню структуру PE настолько подробно, чтобы сходу выложить готовую цепочку переходов, но в интернете информации полно, в том числе с примерами кода.

#11:  Author: FlasherLocation: Москва PostPosted: Sat Sep 14, 2013 19:55
    —
CaptainFlint wrote:
Я говорил не про самостоятельный скрипт, а про script_wdx.
Плагин сам ничего искать не может. Он только подхватывает имена файлов и возвращает полученные скриптом значения.

#12:  Author: CaptainFlintLocation: Москва PostPosted: Sat Sep 14, 2013 20:08
    —
Flasher wrote:
Плагин сам ничего искать не может. Он только подхватывает имена файлов и возвращает полученные скриптом значения.

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

#13:  Author: FlasherLocation: Москва PostPosted: Sat Sep 14, 2013 20:11
    —
CaptainFlint wrote:
пусть выполняет всю работу по открытию файла и чтению нужных байтиков.
Так в этом-то и суть вопроса была, чтобы понять, откуда мысль родилась:
CaptainFlint wrote:
скриптом это делается не сложнее, чем плагином
Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься.

#14:  Author: Serge Yolkin PostPosted: Sat Sep 14, 2013 20:23
    —
MVV
Код по приведенной Вами ссылке тоже дотнетовский. Не то, чтобы фатально, но крайне нежелательно.

Зато там заголовок довольно подробно описан:
Quote:
Структура 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 указывает на действительную область в рамках одной из последующих секций, это означает, что компонент является управляемым.
и картинка есть Smile

Добавлено спустя 13 минут:

CaptainFlint wrote:
пусть выполняет всю работу по открытию файла и чтению нужных байтиков.
Serge Yolkin wrote:
Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил.
"распространять в комплекте с седуксеном..."

#15:  Author: CaptainFlintLocation: Москва PostPosted: Sat Sep 14, 2013 20:43
    —
Flasher wrote:
Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься.

Нет, никаких API нет. Вернее, может, и есть, но я о них не слышал. Обычно PE-формат разбирается вручную, структура заголовков документирована. Просто считывается блок данных фиксированного размера, по определённому смещению из него берётся число, это число задаёт новое смещение внутри файла для следующего заголовка и т.д.

Serge Yolkin wrote:
Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил.

Если болванка скрипта выполняла тупой поиск подстроки во всём содержимом файла, то, разумеется, будет тормозить. Я потому и говорю про чтение и разбор заголовков, чтобы сразу прыгать на нужное смещение, а не перебирать весь двоичный мусор (в котором, к тому же, могут найтись сигнальные строки и дать ложное срабатывание).



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3, 4  Next  :| |:
Page 1 of 4

Powered by phpBB © 2001, 2005 phpBB Group