不加载文件地整理原生 PE 导入声明
选择支持的本地 PE 文件组,检查普通和延迟导入,交付有原件来源的完整 JSON/CSV,不推断 Windows loader 结果。
先确认文件组与交付目标
Dmitry 希望不把 DLL 加载到进程也能取得原生依赖。本工具处理选中文件字节中的静态声明子集;原问题未附 DLL,因此不声称复现其二进制或验证实际 loader 行为。
选择1–100 份原生 x86 PE32 或 x64 PE32+,每份20MiB、合计80MiB。选中 basename 和导入名称使用可打印 ASCII;扩展名或 MIME 不能证明支持。解析要求1–96 个有界 section、RVA 唯一映射到实际文件字节;CLR 与其他机器不支持。
先看声明,再解释选中文件状态
样例 root.exe 是1024 字节人工 x86 PE32,声明普通 HELPER.DLL 和延迟 OPTIONAL.DLL,各有一个按名和一个按序号符号。只选 root.exe 时两个模块都是 not-selected;清单已经完成,并没有得出缺少 DLL 的诊断。
若再选机器声明相同且受支持的 helper.dll,ASCII 大小写折叠后首模块为 selected-declaration。同名两份是 ambiguous-selected;唯一同名但另一受支持机器是 selected-machine-mismatch。任何状态都不检查导出或运行 loader。
| 状态 | 已确定的事实 | 后续决定 |
|---|---|---|
| not-selected | 选中集合没有同名 basename | 需有限匹配时可选择预期本地伴随文件 |
| selected-declaration | 唯一名称与机器声明相同 | 另查导出、运行环境和策略 |
| selected-machine-mismatch | 唯一同名原件为另一受支持机器 | 复核架构假设 |
| ambiguous-selected | 多份 basename 折叠为同名 | 消解选中集合的歧义,不猜赢家 |
按原件来源读取完整两成员 ZIP
pe-imports.zip 恰含两份 STORE 成员。pe-imports.json 保留每份原件字节数/SHA、section 声明、普通/延迟描述符、raw thunk、名称/hint/序号和匹配状态。pe-imports.csv 含全部导入符号行;无符号模块与无导入文件在 JSON 明示。
JSON 中 =Danger() 名称原样保留。CSV 在该公式前缀前增加单引号,并为每格加引号;安全 CSV 单元格与 JSON 原名称有意不同。成员名固定,输入字符串作为数据处理,不成为 HTML 或可执行代码。
界面只显示前200 个模块行,长单元格前2,000 个 UTF-16 单位。JSON 至多20,000 个 UTF-16 单位时完整复制,否则复制明确摘要。交付所有声明和符号行应下载 ZIP,不能把截图或复制摘要当成完整报告。
同时核地址范围与容量
PE32/PE32+ 都支持 RVA 延迟描述符,旧 VA 只支持 PE32;PE32+ 旧 VA 不支持。序号保留位和按名 RVA 的31 位宽严格检查;没有声明的导入/延迟目录产生完整空列表,不虚构目录。其他 PE 目录、代码、overlay、签名及导出目标不在审计范围;完整原件 SHA 覆盖字节,不证明其含义。
全组至多10,000 个描述符、100,000 个符号,ASCIIZ 名称至多4,096 字节。JSON+CSV 合计32MiB,固定两成员头增加232 字节,因而34MiB ZIP 守卫受前者支配。长名称的每次完整 JSON/CSV 出现都计费,即使共用 RVA;安全已知字节下界提前拒绝扩张,终态仍完整测量报告。
完成与恢复,不猜 loader 结果
API-set 是由操作系统 schema 映射的虚拟合同,host 可随环境变化;不保证有同名磁盘文件。选中同名文件也只是有限名称/机器比较。本工具不映射 host、不扫描系统、不递归、不抓取或加载代码。
- 保留原件,用完整 sourceSHA256 确认选中字节。
- 畸形、不支持或预算拒绝后,换支持输入或缩小完整集合。
- 错误与取消均无部分 ZIP;修正后重新运行同一组选中字节。
- 真实导出、搜索、API-set、信任与加载问题另用有授权且合适的 Windows 工具。
参考资料
- Dmitry 的原生 DLL 清单需求,Stack Overflow
第一人称要求不加载 DLL 地取得依赖;原问题于2026-10-08核对,CC BY-SA3.0。无原始 DLL、未证明原件复现或网页工具偏好。
- Microsoft PE/COFF 格式
头、section、普通/延迟导入及保留位的正确性参考,不作为需求证据。
- Microsoft API-set loader 操作
虚拟合同及运行时 host 映射不同于 basename 匹配;本工具不做该映射。
- Microsoft DLL 搜索顺序
Loader 上下文和搜索策略不在静态文件声明范围内。
本分类工具使用说明
展开工具,查看操作步骤、可调选项和支持范围,再直接进入工作区。
原生 PE 导入声明检查读取本地 x86 PE32 或 x64 PE32+ 的普通与延迟导入,保留名称/序号和原件哈希,导出完整 JSON 与公式安全 CSV ZIP。
检查导入声明,无须加载 DLL 或运行 EXE。选中文件匹配只比较有限名称和机器声明;进一步排查时应读取完整 ZIP。
操作步骤
- 选择需要查看声明的本地原生 PE 文件;原字节不变。
- 运行清单,查看普通/延迟模块、符号数与有限选中文件状态。
- 下载 pe-imports.zip,按原件 SHA 阅读每个 JSON 声明和全部 CSV 符号行。
- 真实加载、API-set、导出或信任问题另用有授权且适合的 Windows 工具核查。
能力与限制
- 1–100 个本地文件,每个最多20MiB、合计80MiB;每份1–96 个 section,全组最多10,000 个导入描述符和100,000 个导入符号。各预算同时适用。
- 仅原生 x86 PE32、x64 PE32+,RVA 表须唯一映射到实际文件字节。CLR、其他机器与没有原 lookup 的 bound-only 导入不支持。延迟导入支持 PE32 RVA/旧 VA、PE32+ RVA;PE32+ 旧 VA 不支持。
- 导入模块/符号名称为可打印 ASCII ASCIIZ,最多4,096 字节。选中文件名须为无路径分隔符的可打印 ASCII basename。按名导入 RVA thunk 限31 位;核对序号保留位、头/section 边界、表终止符和目录声明。
- 只在选中 basename 之间做 ASCII 大小写折叠。not-selected 表示未选入同名文件;selected-declaration 表示唯一选中名称/机器声明匹配。同名歧义和机器不符单列。状态不证明导出符号、信任、DLL 可用性或 Windows 加载结果。
- API-set 名称是由系统映射的虚拟合同,不保证磁盘有同名 DLL。工具不搜索系统、不映射 API-set host、不递归解析依赖、不抓取文件、不加载 DLL、不执行代码,也不进行签名或信任审计。
- pe-imports.zip 恰含 pe-imports.json、pe-imports.csv 两成员。完整报告合计最多32MiB;固定 STORE 头增加232 字节。34MiB ZIP 守卫受报告预算支配,不是另一项可单独达到的容量轴;复用长名称会在报告扩展前计费。
- JSON 保留每份原件 SHA/字节数、section、描述符、raw thunk、名称/hint/序号与选中文件状态。CSV 含全部导入符号行;无符号的描述符和没有导入的文件仍在 JSON 明示。CSV 防护公式前缀,JSON 原名称保持不变。
- 界面预览前200 个模块声明,长单元格显示前2,000 个 UTF-16 单位。JSON 至多20,000 个 UTF-16 单位时完整复制,更长时复制明确摘要;ZIP 始终保留完整 JSON/CSV。畸形、不支持、超限或取消均无部分 ZIP。