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

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

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

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

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

Категории

Все категории
Loading categories
Get-PDInvokeImports — Модуль PowerShell для автоматического обнаружения P/Invoke, Dynamic P/Invoke и D/Invoke в сборках .NET. Раскрывает вызовы неуправляемых API, MDTokens и расположения экспортов в закладках DnSpy для анализа вредоносного ПО. | Kitploit
Инструменты/GitHubGitHub/dump-guy/get-pdinvokeimports
Статический анализОбратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubdump-guy/get-pdinvokeimports

Get-PDInvokeImports

Модуль PowerShell для автоматического обнаружения P/Invoke, Dynamic P/Invoke и D/Invoke в сборках .NET. Раскрывает вызовы неуправляемых API, MDTokens и расположения экспортов в закладках DnSpy для анализа вредоносного ПО.

Репозиторий

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
5464 лет назадПроверено Kitploit

Get-PDInvokeImports

Описание:

Get-PDInvokeImports — это инструмент (модуль PowerShell), способный выполнять автоматическое обнаружение использования P/Invoke, Dynamic P/Invoke и D/Invoke в сборке. Показывает все места, откуда они вызываются, и экспортирует все в DnSpy_Bookmarks.xml.

Этот PS-модуль может быть полезен и удобен при реверс-инжиниринге .NET-сборок для быстрого выявления вызовов неуправляемых API-функций, используемых в сборке. Иногда вредоносные сборки содержат много мусорного кода, где основная функциональность реализована с помощью прямых вызовов WIN API или NTAPI.
Get-PDInvokeImports позволяет быстро получить обзор того, какие P/Invoke, Dynamic P/Invoke и D/Invoke используются в сборке — он покажет, какие функции используются, их MDToken, где они объявлены и все места, где они вызываются из кода.
Он позволяет экспортировать все места, где обнаружены ссылки на P/Invoke, Dynamic P/Invoke и D/Invoke из кода, в файл DnSpy_Bookmarks.xml.

Пример: Представьте сборку размером 1 МБ, полную мусорного кода и CF-обфускации, где основная функциональность реализована через вызовы неуправляемых WinAPI\NTAPI.

Этот PS-модуль написан на PowerShell и полностью совместим с Windows PowerShell (.NET Framework) и PowerShell Core (на основе .NET, .NET Core). Он использует dnlib для разбора сборки и .NET reflection для загрузки dnlib. Dnlib доступен для .NET Framework и .NET Standard — это означает, что можно использовать этот PS-модуль с dnlib как в Windows, так и в Linux.

Что такое P/Invoke, Dynamic P/Invoke и D/Invoke?

Если очень кратко, это возможные способы вызова неуправляемого кода из управляемого (упрощённо — можно напрямую вызывать WinAPI/NTAPI из .NET).
Некоторые из них проще в реализации, некоторые лучше позволяют избегать обнаружения AV и перехвата.

Подробнее:

P/Invoke — [PInvoke]
D/Invoke — [DInvoke]
Dynamic P/Invoke — [Dynamic PInvoke]

Установка:

[Releases] содержит уже скомпилированный dnlib для указанной платформы + скрипт Get-PDInvokeImports.ps1.
Windows — Скачать [релиз] (использовать в Windows PowerShell или PowerShell Core)
Linux — Скачать [релиз] (использовать в PowerShell Core)

При необходимости — скомпилировать dnlib самостоятельно (Windows — .NET Framework, Linux — netstandard)

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

Видео: [YouTube]

[ПАРАМЕТР] -PathToAssembly

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

[ПАРАМЕТР] -PathToDnlib

Необязательный параметр.
Системный путь к dnlib.dll.

Если PowerShell запущен из папки, где находится dnlib.dll, этот параметр можно игнорировать; в противном случае укажите его.

[ПАРАМЕТР] -ExportDnSpyBookmarks

Необязательный параметр.
Используется для экспорта всех обнаруженных мест P/Invoke, Dynamic P/Invoke и D/Invoke, на которые есть ссылки из кода, в XML-файл закладок DnSpy (DnSpy_Bookmarks.xml).

Похоже на DnSpy-Analyze-UsedBy (удобный обзор, где все PInvoke и DInvoke используются во всём коде).

Таким образом, его можно импортировать в DnSpy через окно закладок (DnSpy -> View -> Bookmarks -> Bookmark Window -> Import bookmarks from file -> выберите DnSpy_Bookmarks.xml).

[ПРИМЕРЫ]

root@kitploit:~
PS> Import-Module .\Get-PDInvokeImports.ps1
PS> Get-PDInvokeImports -PathToAssembly 'C:\testfiles\malware.exe'
PS> Get-PDInvokeImports -PathToAssembly .\malware.exe –ExportDnSpyBookmarks
PS> Get-PDInvokeImports -PathToAssembly 'C:\testfiles\malware.exe' -PathToDnlib "C:\dnlib.dll" –ExportDnSpyBookmarks

Примеры в Linux:

Примеры в Windows:

Примечания

Обнаружение должно быть достаточно надёжным, чтобы преодолеть некоторые распространённые обфускации.
Протестировано с наиболее распространёнными обфускаторами, такими как SmartAssembly, ConfuserEx и т.д.

Внутренние механизмы обнаружения: P/Invoke обнаруживается через атрибут PinvokeImpl, который должен быть всегда указан.
D/Invoke обнаруживается через атрибут "UnmanagedFunctionPointerAttribute" и "CallingConvention" (при определённых условиях это можно обойти, но я оставляю это на усмотрение RedTeam (я всё равно вас переиграю).
Обнаружение Dynamic P/Invoke основано на поиске методаX, ссылающегося на DefinePInvokeMethod(), и всех методовY, ссылающихся на методX.

Зависимости:

[dnlib] (читатель/писатель метаданных .NET, способный также читать обфусцированные сборки)
[DnSpyEx - опционально]

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