Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/synacktiv/dotniet
Статический анализОбратная инженерияАнализ Бинарных Файлов
GitHubsynacktiv/dotniet

dotNIET

Плагин для IDA Pro, который импортирует символы, разрешаемые во время выполнения, в бинарных файлах .NET Native, анализируя SharedLibrary.dll и его PDB для восстановления отсутствующих импортов для анализа.

Репозиторий
112115 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
vladimir    

.NIET

Alt text

.NIET — это плагин для IDA Pro. Его назначение — импортировать отсутствующие символы (обычно несколько тысяч), которые разрешаются во время выполнения бинарными файлами, скомпилированными с помощью .NET Native. Эти символы находятся в SharedLibrary.dll и не экспортируются ею.

.NIET тестировался на IDA Pro 7.5 с использованием python 3.8 на следующих платформах:

  • Windows
  • Linux

В настоящее время этот плагин поддерживает следующие версии .NET Native framework:

  • 1.3
  • 1.6
  • 1.7
  • 2.2

Пожалуйста, создайте issue, если вы столкнулись с другой версией.

Установка

Скопируйте эти элементы в каталог плагинов IDA Pro:

root@kitploit:~
dotNIET_plugin.py
dotNIET\

Зависимости

.NIET полагается на pefile для разбора каталогов ресурсов.

pefile можно установить следующим образом:

root@kitploit:~
pip install pefile

Требования

Поскольку символы импортируются из SharedLibrary.dll, этот файл должен быть предоставлен .NIET вместе со своим pdb (его местоположение ищется плагином в _NT_SYMBOL_PATH).

Реализованы вспомогательные функции для определения версий .NET Native framework и проверки того, что pdb файла SharedLibrary.dll существует в настроенном пути символов.

Использование

Alt text

.NIET можно запустить с помощью сочетания клавиш Alt-Shift-N или через меню Edit/Plugins.

При запуске плагин пытается определить версию .NET Native framework текущего бинарного файла. Вам остаётся только выбрать SharedLibrary.dll подходящей версии и нажать Run.

.NIET определит версию .NET Native framework целевой DLL и выведет сообщение, если версии не совпадают. Обычно важны только номера старшей и младшей версий (Major и Minor).

Принцип работы

.NIET ищет таблицу пользовательских дескрипторов импорта .NET Native в секции .rdata. Для этого он читает данные по определённым смещениям структуры Custom Header, а затем разбирает массив порядковых номеров (ordinals).

Этот массив порядковых номеров указывает на различные места в записях пользовательской таблицы SharedLibrary.dll.

Разрешение символов выполняется путём запуска экземпляра IDA Pro в режиме headless через его бинарный файл idat для разбора pdb файла SharedLibrary.dll.

Соглашение об именовании импортированных символов

Символы импортируются как есть, если это возможно, но могут встретиться некоторые особые случаи:

  • иногда импортированные адреса представляют собой только символы-заглушки jmpstubs на смещения или одиночные инструкции jmp на символы. Их имя символа заменяется .NIET на имя целевой функции с префиксом jmp_
  • некоторые адреса, разрешаемые средой выполнения .NET Native, указывают на символы после нескольких разыменований. Если .NIET не может найти символ по импортированному адресу, он пытается выполнять разыменование, пока не найдёт его. К имени такого символа, если он найден, добавляется deref_X, где X — количество разыменований.
  • некоторые адреса указывают на смещения внутри таблицы EETableSection. Поскольку я новичок в .NET Native, я понятия не имею, что это такое (пока?), поэтому эти адреса помечаются как EETableSection_XXX, где XXX — смещения от EETableSection внутри SharedLibrary.dll

Известные ограничения

  • Не работает (пока) в версии IDA Pro для macOS
  • .NIET довольно медленный, так как требует разбора pdb довольно больших бинарных файлов
  • Опция «restore .idata» (своего рода опция «отмены») только снимает импортированные символы. Поскольку IDA автоматически распространяет имена во время импорта, вам, вероятно, потребуется снова запустить автоматический анализ, если вы хотите удалить все следы импортированных символов. Обходным путём может быть создание снимка базы данных перед запуском плагина.
  • .NIET разбирает символы только из модуля SharedLibrary.dll, хотя исходная подпрограмма, отвечающая за разрешение символов, вероятно, предоставляет возможность разбирать и другие модули (я не знаю, действительно ли это происходит помимо модуля SharedLibrary.dll)

Устранение неполадок

idat файл журнала определяется как %tmpdir%/dotNIETlogs.txt

Почему такое название

Потому что реверс-инжиниринг .NET Native — это кошмар

Скачать инструмент