View previous topic :: View next topic |
Author |
Message |
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Sep 14, 2013 01:06 Post subject: [PluginRequest] WDX для подсветки исполняемых файлов .net |
|
|
Уважаемые программисты, насколько трудно написать wdx плагин, определяющий, является ли исполняемый файл дотнетовским? Логика работы примерно такая:
// возвращаемое поле, например, PEType
если (первые два байта - MZ) то {
если (файл содержит текст "mscoree.dll") то {
возвращаем "dotNet"
} иначе возвращаем "Win32/64"
} иначе пропускаем (возвращаем пустую строку)
А если он ещё и x64 от x32 отличить сумеет - цены ему не будет. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 11:44 Post subject: |
|
|
Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить. Уточни, в чём именно у тебя тут был затык.
Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита? Вроде бы, с точки зрения PE-формата он остаётся 32-битным. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Sep 14, 2013 13:52 Post subject: |
|
|
CaptainFlint wrote: | Думаю, это можно сделать даже на script_wdx. | На счёт скриптовых технологий есть опасение по части тормозов, а не хотелось бы. CaptainFlint wrote: | Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll, чтобы весь файл не шерстить. | Не специалист, но визуально (в hex) эта библиотека упомянута несколько отдельно, это может оказаться не секция импортов. CaptainFlint wrote: | Уточни, в чём именно у тебя тут был затык. | Не понял, что надо уточнить. По предложенным плагинам я отписался. Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил. Текущую проблему решить можно, если запустить на ночь, а как рабочий инструмент... CaptainFlint wrote: | Насчёт 32/64: а разве .NET поддерживает спец-сборку под 64 бита? | Не-не-не, я имел в виду следующие варианты экспертных заключений плагина: dotNet, Win32, Win64, noPE. Возвращаемые значения значения не имеют ( ), хоть 1-2-3-4. Лишь бы можно было различить. |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Sep 14, 2013 16:22 Post subject: |
|
|
Alextp
Вариант. Но ещё немного подожду. Может, кто создаст нечто маленькое и шустрое, а то PE Viewer слегка избыточен для этой цели.
Может, я не прав, но логичнее было бы добавить такой функционал в UnicodeTest/LockedTest |
|
Back to top |
|
|
Alextp
Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Sat Sep 14, 2013 16:25 Post subject: |
|
|
Почему логичнее. нет не логичнее. Он не предназначен для рзбора форматов файлов
И я не знаю, как это делать _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Sep 14, 2013 17:01 Post subject: |
|
|
Alextp
Логика такая:- Ваш плагин предназначен не столько для показа какой-то информации, сколько для детектирования файлов, удовлетворяющих определённому условию.
- Основной способ использования Вашего плагина - раскраска файлов и поиск с плагинами, а не создание колонок.
- Группы файлов "занят" и "юникодные" логически не особо связаны друг с другом.
Вот я и подумал, что добавить в него распознование ещё одной-двух групп файлов было бы логично, но нет - так нет.
Добавлено спустя 5 минут:
К тому же, Ваш плагин маленький и шустрый. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 17:41 Post subject: |
|
|
CaptainFlint wrote: | Думаю, это можно сделать даже на script_wdx. Формат PE довольно простой, можно найти секцию импортов и поискать там mscoree.dll | А как эту секцию предлагается искать скриптом?
Serge Yolkin wrote: | раскраска файлов и поиск с плагинами, а не создание колонок. | Весьма сомнительная оценка необходимости действий контентного плагина. Не вижу смысла таким способом окрашивать файлы. Колонки наравне со всплывающими подсказками, по мне, - самое что ни на есть очевидное для использования подобных инфоплагинов. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 19:48 Post subject: |
|
|
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 настолько подробно, чтобы сходу выложить готовую цепочку переходов, но в интернете информации полно, в том числе с примерами кода. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 19:55 Post subject: |
|
|
CaptainFlint wrote: | Я говорил не про самостоятельный скрипт, а про script_wdx. | Плагин сам ничего искать не может. Он только подхватывает имена файлов и возвращает полученные скриптом значения. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 20:08 Post subject: |
|
|
Flasher wrote: | Плагин сам ничего искать не может. Он только подхватывает имена файлов и возвращает полученные скриптом значения. |
Ну да. И вот этот скрипт, который запускается плагином, пусть выполняет всю работу по открытию файла и чтению нужных байтиков. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 20:11 Post subject: |
|
|
CaptainFlint wrote: | пусть выполняет всю работу по открытию файла и чтению нужных байтиков. | Так в этом-то и суть вопроса была, чтобы понять, откуда мысль родилась: CaptainFlint wrote: | скриптом это делается не сложнее, чем плагином | Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Serge Yolkin
Joined: 25 Jul 2009 Posts: 664
|
(Separately) Posted: Sat Sep 14, 2013 20:23 Post subject: |
|
|
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 указывает на действительную область в рамках одной из последующих секций, это означает, что компонент является управляемым. | и картинка есть
Добавлено спустя 13 минут:
CaptainFlint wrote: | пусть выполняет всю работу по открытию файла и чтению нужных байтиков. |
Serge Yolkin wrote: | Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил. | "распространять в комплекте с седуксеном..." |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Sat Sep 14, 2013 20:43 Post subject: |
|
|
Flasher wrote: | Для поиска секций, как я понимаю, используются специальные API-функции, к которым без сторонних средств не подберёшься. |
Нет, никаких API нет. Вернее, может, и есть, но я о них не слышал. Обычно PE-формат разбирается вручную, структура заголовков документирована. Просто считывается блок данных фиксированного размера, по определённому смещению из него берётся число, это число задаёт новое смещение внутри файла для следующего заголовка и т.д.
Serge Yolkin wrote: | Болванку скрипта вчера пробовал сделать, но не дождался, когда он отработает на папке ~60Mb, прибил. |
Если болванка скрипта выполняла тупой поиск подстроки во всём содержимом файла, то, разумеется, будет тормозить. Я потому и говорю про чтение и разбор заголовков, чтобы сразу прыгать на нужное смещение, а не перебирать весь двоичный мусор (в котором, к тому же, могут найтись сигнальные строки и дать ложное срабатывание). _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|