Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Get-PDInvokeImports — Módulo de PowerShell para la detección automática de P/Invoke, Dynamic P/Invoke y D/Invoke en ensamblados .NET. Revela llamadas a API no administradas, MDTokens y ubicaciones de exportaciones a marcadores de DnSpy para análisis de malware. | Kitploit
Herramientas/GitHubGitHub/dump-guy/get-pdinvokeimports
Análisis EstáticoIngeniería InversaAnálisis de MalwareAnálisis de Binarios
GitHubdump-guy/get-pdinvokeimports

Get-PDInvokeImports

Módulo de PowerShell para la detección automática de P/Invoke, Dynamic P/Invoke y D/Invoke en ensamblados .NET. Revela llamadas a API no administradas, MDTokens y ubicaciones de exportaciones a marcadores de DnSpy para análisis de malware.

Ver Repositorio

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
546hace 4 añosRevisado por Kitploit

Get-PDInvokeImports

Descripción:

Get-PDInvokeImports es una herramienta (módulo de PowerShell) capaz de realizar la detección automática del uso de P/Invoke, Dynamic P/Invoke y D/Invoke en un ensamblado. Muestra todas las ubicaciones desde donde se hace referencia a ellos y exporta todo a DnSpy_Bookmarks.xml

Este módulo de PS puede ser útil y de ayuda durante la ingeniería inversa de ensamblados .NET para revelar rápidamente llamadas a funciones de API no administradas utilizadas en el ensamblado. A veces, los ensamblados de malware están llenos de código basura donde la funcionalidad principal se implementa mediante llamadas directas a WIN API o NTAPI.
Get-PDInvokeImports le permite obtener una visión rápida de qué P/Invoke, Dynamic P/Invoke y D/Invoke se utilizan en el ensamblado: le mostrará qué funciones se utilizan + MDTokens, dónde se declaran y todas las ubicaciones donde se utilizan desde el código.
Permite exportar todas las ubicaciones donde se detectan referencias de P/Invoke, Dynamic P/Invoke y D/Invoke desde el código a DnSpy Bookmarks.xml

Ejemplo: Imagine un ensamblado de 1 MB lleno de código basura + ofuscación CF donde la funcionalidad principal se alcanza mediante llamadas a WinAPI\NTAPI no administradas.

Este módulo de PS está escrito en PowerShell y es totalmente compatible con Windows PowerShell (.NET Framework) y PowerShell Core (basado en .NET, .NET Core). Utiliza dnlib para analizar el ensamblado y la reflexión de .NET para cargar dnlib. Dnlib está disponible para .NET Framework y .NET Standard; esto simplemente significa que se puede usar este módulo de PS dependiendo de dnlib en Windows y también en Linux.

¿Qué son P/Invoke, Dynamic P/Invoke y D/Invoke?

Bueno, dicho muy brevemente, estas son posibles implementaciones de cómo se puede llamar a código no administrado desde código administrado (simplificado: se pueden usar para llamar directamente a WinAPI/NTAPI desde .NET).
Algunas son más fáciles de implementar, otras son mejores para evitar la detección de AV y el hooking.

Más información:

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

Instalación:

[Releases] contiene dnlib ya compilado para la plataforma especificada + el script Get-PDInvokeImports.ps1.
Windows – Descargue [release] (Úselo desde Windows PowerShell o PowerShell Core)
Linux – Descargue [release] (Úselo desde PowerShell Core)

Si es necesario, compile dnlib por su cuenta (Windows – .NET Framework, Linux-netstandard)

Uso:

Video: [YouTube]

[PARÁMETRO] -PathToAssembly

Parámetro obligatorio.
Especifica la ruta del ensamblado a escanear.

[PARÁMETRO] -PathToDnlib

Parámetro opcional.
Ruta del sistema a dnlib.dll.

Si PowerShell se está ejecutando desde la ubicación de dnlib.dll, este parámetro se puede omitir; de lo contrario, especifique este parámetro.

[PARÁMETRO] -ExportDnSpyBookmarks

Parámetro opcional.
Se utiliza para exportar todas las ubicaciones detectadas de P/Invoke, Dynamic P/Invoke y D/Invoke referenciadas desde el código a un archivo XML de marcadores de DnSpy (DnSpy_Bookmarks.xml)

Similar a DnSpy-Analyze-UsedBy (una buena visión general de dónde se utilizan todos los PInvoke y DInvoke en todo el código)

Por lo tanto, es posible importarlo a DnSpy a través de la ventana de marcadores (DnSpy -> Ver -> Marcadores -> Ventana de marcadores -> Importar marcadores desde archivo -> seleccionar DnSpy_Bookmarks.xml)

[EJEMPLOS]

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

Ejemplos en Linux:

Ejemplos en Windows:

Observaciones

La detección debería ser lo suficientemente robusta como para superar algunas ofuscaciones comunes..
Probado con los ofuscadores más comunes como SmartAssembly, ConfuserEx, etc.

Detección interna: P/Invoke se detecta mediante el atributo PinvokeImpl que debe estar siempre presente.
D/Invoke se detecta mediante el atributo "UnmanagedFunctionPointerAttribute" y "CallingConvention" (Esto podría ser superado bajo ciertas circunstancias, pero lo dejo a la imaginación del RedTeam (de todas formas te ganaré)
La detección de Dynamic P/Invoke se basa en encontrar methodX que haga referencia a DefinePInvokeMethod() + todos los methodsY que hagan referencia a methodX.

Dependencias:

[dnlib] (lector/escritor de metadatos .NET que también puede leer ensamblados ofuscados)
[DnSpyEx - opcional]

Descargar herramienta