Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Get-PDInvokeImports — PowerShell 模块,用于自动检测 .NET 程序集中的 P/Invoke、Dynamic P/Invoke 和 D/Invoke。揭示非托管 API 调用、MDToken 并将导出位置输出到 DnSpy 书签,用于恶意软件分析。 | Kitploit
工具/GitHubGitHub/dump-guy/get-pdinvokeimports
静态分析逆向工程恶意软件分析二进制分析
GitHubdump-guy/get-pdinvokeimports

Get-PDInvokeImports

PowerShell 模块,用于自动检测 .NET 程序集中的 P/Invoke、Dynamic P/Invoke 和 D/Invoke。揭示非托管 API 调用、MDToken 并将导出位置输出到 DnSpy 书签,用于恶意软件分析。

查看仓库
5464年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Get-PDInvokeImports

描述:

Get-PDInvokeImports 是一个工具(PowerShell 模块),能够自动检测程序集中 P/Invoke、动态 P/Invoke 和 D/Invoke 的使用情况。它显示所有引用这些调用的位置,并将所有内容导出为 DnSpy_Bookmarks.xml。

该 PS 模块在逆向 .NET 程序集时非常有用,可快速揭示程序集中使用的非托管 API 函数调用。有时恶意软件程序集充满垃圾代码,其主要功能通过直接调用 WIN API 或 NTAPI 实现。
Get-PDInvokeImports 让您快速概览程序集中使用了哪些 P/Invoke、动态 P/Invoke 和 D/Invoke——它会显示使用了哪些函数 + MDToken、声明位置以及代码中所有使用的地方。
它能够将所有检测到的 P/Invoke、动态 P/Invoke 和 D/Invoke 引用位置导出到 DnSpy Bookmarks.xml 中。

示例:想象一个 1MB 的程序集,充满垃圾代码和 CF 混淆,其主要功能通过非托管 WinAPI\NTAPI 调用实现。

此 PS 模块使用 PowerShell 编写,完全兼容 Windows PowerShell(.NET Framework)和 PowerShell Core(基于 .NET、.NET Core)。它使用 dnlib 解析程序集,并通过 .NET 反射加载 dnlib。Dnlib 适用于 .NET Framework 和 .NET Standard——这意味着您可以在 Windows 和 Linux 上根据 dnlib 使用此 PS 模块。

什么是 P/Invoke、动态 P/Invoke 和 D/Invoke?

简单来说,这些是从托管代码调用非托管代码的可能实现方式(简化来说——可用于直接从 .NET 调用 WinAPI/NTAPI)。
其中一些实现起来更容易,另一些则更擅长规避 AV 检测和钩子(Hook)。

更多信息:

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

安装:

[Releases] 包含已为指定平台编译好的 dnlib 以及脚本 Get-PDInvokeImports.ps1。
Windows – 下载 [release](在 Windows PowerShell 或 PowerShell Core 中使用)
Linux – 下载 [release](在 PowerShell Core 中使用)

如果需要,可以自行编译 dnlib(Windows – .NET Framework,Linux – netstandard)

用法:

视频:[YouTube]

[参数] -PathToAssembly

必需参数。
指定要扫描的程序集路径。

[参数] -PathToDnlib

可选参数。
dnlib.dll 的系统路径。

如果 PowerShell 正在从 dnlib.dll 所在位置运行,则可忽略此参数;否则请指定此参数。

[参数] -ExportDnSpyBookmarks

可选参数。
用于将所有检测到的 P/Invoke、动态 P/Invoke 和 D/Invoke 引用位置导出到 DnSpy Bookmarks XML 文件(DnSpy_Bookmarks.xml)

类似于 DnSpy 的 Analyze-UsedBy 功能(可清晰概览所有 PInvoke 和 DInvoke 在整个代码中的使用位置)

因此,您可以通过书签窗口将其导入 DnSpy(DnSpy -> 视图 -> 书签 -> 书签窗口 -> 从文件导入书签 -> 选择 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" 检测(在某些情况下可能被绕过——但留给红队自行想象(我反正会打败你们))
动态 P/Invoke 检测基于查找引用了 DefinePInvokeMethod() 的方法X,以及所有引用方法X 的方法Y。

依赖项:

[dnlib](.NET 元数据读写器,也可读取混淆后的程序集)
[DnSpyEx - 可选]

下载工具