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

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

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

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

工具目录

分类

查看所有分类
Loading categories
dotNIET — IDA Pro 插件,可导入 .NET Native 二进制文件中运行时解析的符号,通过解析 SharedLibrary.dll 及其 PDB 恢复缺失的导入项,以便进行分析。 | Kitploit
工具/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 框架版本:

  • 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 导入的,因此必须将该文件 连同其 pdb 一起提供给 .NIET(插件会在 _NT_SYMBOL_PATH 中搜索其位置)。

已实现了辅助功能来识别 .NET Native 框架版本,并验证 SharedLibrary.dll 的 pdb 是否存在于已配置的符号路径中。

用法

Alt text

.NIET 可以使用快捷键 Alt-Shift-N 启动,或通过 Edit/Plugins 菜单启动。

启动后,插件会尝试识别当前二进制的 .NET Native 框架版本。你只需选择正确版本的 SharedLibrary.dll,然后点击 Run 即可。

.NIET 会识别目标 dll 的 .NET Native 框架版本,如果版本不一致则会弹出提示信息。通常只有主版本号和次版本号才是最重要的。

工作原理

.NIET 会在 .rdata 节中查找 .NET Native 自定义导入描述符表。为此,它读取 Custom Header 结构中特定偏移位置的数据,然后解析一个序号数组。

该序号数组指向 SharedLibrary.dll 自定义表条目中的各个位置。

通过其二进制文件 idat 启动 IDA Pro 无头(headless)实例来解析 SharedLibrary.dll 的 pdb,从而实现符号解析。

导入符号的命名约定

符号在可能的情况下会按原样导入,但可能会遇到一些特殊情况:

  • 有时导入的地址只是指向偏移量的 jmpstubs 符号,或指向符号的单个 jmp 指令。.NIET 会将这些符号名称替换为目标函数名,并在前面加上 jmp_
  • 某些由 .NET Native 运行时解析的地址在多次解引用后才会指向符号。如果 .NIET 在导入地址处找不到符号,它会尝试解引用,直到找到为止。如果找到,会在该符号名称后追加 deref_X,其中 X 是解引用的次数。
  • 某些地址指向 EETableSection 表内的偏移量。由于我尚未深入了解 .NET Native,我(暂时)不知道这是什么,因此这些地址会被标记为 EETableSection_XXX,其中 XXX 是 SharedLibrary.dll 中相对于 EETableSection 的偏移量。

已知限制

  • 尚不适用于 macOS 版本的 IDA Pro
  • .NIET 相当慢,因为它需要解析相当大的二进制文件的 pdb
  • “restore .idata”选项(一种“撤销”选项)仅会取消导入符号。因为 IDA 在导入期间会自动传播名称,如果你想清除所有导入符号的痕迹,很可能需要重新运行自动分析。一种变通方法是在运行插件前创建数据库快照。
  • .NIET 仅从 SharedLibrary.dll 模块解析符号,尽管负责符号解析的原始例程很可能提供了解析其他模块的可能性(除了 SharedLibrary.dll 模块之外是否真的会发生,我不确定)。

故障排除

idat 的 日志文件 定义为 %tmpdir%/dotNIETlogs.txt

为什么取这个名字

因为逆向 .NET Native 是一场噩梦

下载工具