Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
NativePe — Object Pascal (Delphi) 库,用于解析、映射、加载和转储 Windows PE 文件,支持重定位、导入、TLS 以及远程进程内存读取。 | Kitploit
工具/GitHubGitHub/habanada/nativepe
动态分析 (沙盒)内存取证逆向工程恶意软件分析实用工具与框架二进制分析Payload 开发二进制利用
GitHubhabanada/nativepe

NativePe

Object Pascal (Delphi) 库,用于解析、映射、加载和转储 Windows PE 文件,支持重定位、导入、TLS 以及远程进程内存读取。

查看仓库
181天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

NativePe

NativePe

NativePe 是一个使用 Object Pascal 为 Delphi 编写的 Windows 可移植可执行文件(PE)库。

该项目专注于 PE 解析、映射、加载、重定位、导入与导出处理、转储、进程内存读取以及相关的 Windows 内部机制。它支持从同一源码树构建 Win32 和 Win64 版本。

NativePe 是一个研究项目。它已经针对大量正常、异常、畸形和恶意的 PE 文件进行了测试,但并不声称能够正确处理所有可能的 PE 文件。

动机

部分动机是个人原因。我在 2000 年代初使用过 Delphi,想用现代 Delphi 重新审视底层 Windows 开发。

NativePe 也是一个实践性实验,旨在表明 Object Pascal 仍然可以用于 PE 和 Windows 内部机制研究。

起源及与 libpeconv 的关系

NativePe 的 PE 处理核心是 hasherezade 的 libpeconv 的 Object Pascal 移植/重新实现。

代码已用 Object Pascal 重写,但核心模块划分以及许多公共操作、验证路径、控制流决策、回退规则、诊断和测试均源自 libpeconv 源码。因此,NativePe 并非其所移植的 libpeconv 功能的净室或独立设计实现。

当前差分测试框架所使用的 libpeconv 修订版本为提交 0fc25f680e03699d33ef3b2034a6724365f3d1a4。

感谢 hasherezade 发布 libpeconv。有关源码级关系,请参见 docs/PROVENANCE.md;有关署名和许可声明,请参见 THIRD-PARTY-NOTICES.md。

本项目的原创内容

NativePe 不仅仅是 libpeconv 的语法翻译。当前项目在移植核心的基础上增加了 NativePe 特有的功能以及 Delphi/Windows 集成。

这包括 API Set 解析、可插拔的 WinAPI/NTAPI/直接系统调用内存提供程序、安全 Cookie 初始化、PE 回收辅助工具以及相关集成代码。这些部分在固定版本的 libpeconv 核心中没有直接对应的源码模块。

该仓库还包含 NativePe 特有的 Delphi 测试项目、真实场景测试夹具、语料库工具以及 Windows 集成测试。

主要功能

  • PE32 和 PE32+ 头及节处理
  • RAW 到虚拟地址以及虚拟地址到 RAW 的转换
  • 基址重定位
  • 普通导入和延迟加载导入处理
  • 导出查找和导出映射
  • TLS 解析和回调处理
  • 资源目录解析
  • 异常目录处理
  • Load Config 解析
  • 基于 PEB 的模块查找
  • 手动 PE 加载
  • 远程进程 PE 读取和转储
  • 导入重建和修复辅助工具
  • 代码洞穴发现和 PE 回收辅助工具
  • IAT 和本地函数重定向辅助工具
  • 可选的 API Set 解析
  • 可选的安全 Cookie 初始化
  • 可插拔内存访问层
  • WinAPI 内存后端
  • 通过 ntdll 的 NTAPI 内存后端
  • Win64 直接系统调用内存后端
  • Win32 和 Win64 目标

更多详情请参见 docs/FEATURES.md。

内存后端

NativePe 通过 TNativePeMemoryProvider 将 PE 逻辑与选定的操作系统内存操作分离。

当前内置后端包括:

  • TWinApiMemoryProvider
  • TNtApiMemoryProvider
  • Win64 上的 TSyscallMemoryProvider

现有的钩子路径还保留了其可选的 UseSyscalls 兼容开关,用于基于直接系统调用的内存保护。

请参见 docs/MEMORY-PROVIDERS.md。

测试

NativePe 使用多个测试层:

  • DUnitX 回归和集成测试
  • 畸形 PE 测试
  • 真实 Windows 进程和加载器测试
  • 隔离的语料库运行器
  • libpeconv 保真度和差分检查

2026 年 9 月 25 日记录的差分运行使用 NativePe 和固定版本的 libpeconv 测试框架处理了 30,159 个相同的语料库路径。在结果层面,30,147 个路径匹配,12 个不同。NativePe 在该次运行中未记录到工作进程崩溃;libpeconv 测试框架记录了六次。这些结果仅描述该语料库和这些测试框架,并不构成普遍优越性的证明。

该次运行并非基准测试级别的性能运行,因此其计时数据不用于性能声明。外部语料库和恶意软件样本不随 NativePe 分发。

请参见 docs/TESTING.md、docs/CORPUS-RESULTS.md 和 docs/LIBPECONV-COMPARISON.md。

构建

NativePe 使用 Delphi 12 Athens 开发。

打开 NativePe.groupproj 以构建包含的演示、测试、语料库运行器、进程转储工具和真实场景测试项目。

主库源码位于 src 下。项目也可以通过将 src 添加到 Delphi 单元搜索路径并引用所需的 NativePe.* 单元来直接使用 NativePe。

包含的项目同时支持 Win32 和 Win64。

最小加载器示例

以下示例映射一个 PE 映像、应用重定位并解析导入。它不会调用 PE 入口点。

program PeLoaderMinimal;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  NativePe.BufferUtil,
  NativePe.PeLoader;

var
  Image: TAlignedBuf;
  ImageSize: NativeUInt;

begin
  if ParamCount <> 1 then
    Halt(1);

  Image := LoadPeExecutable(ParamStr(1), ImageSize);
  if Image = nil then
    Halt(1);
  try
    Writeln('Loaded at: 0x', IntToHex(NativeUInt(Image), SizeOf(Pointer) * 2));
    Writeln('Virtual size: ', ImageSize);
  finally
    FreePeBuffer(Image, ImageSize);
  end;
end.

将 src 添加到 Delphi 单元搜索路径,并以一个 PE 文件作为唯一参数运行该程序。

运行工具

该仓库包含多个可执行文件和辅助脚本。主要入口点在 docs/BINARIES.md 中有文档说明。

重要提示:NativePeDemo.exe 会加载并执行所提供的 PE 文件。请仅将其用于受信任的测试文件。语料库运行器设计用于静态 PE 处理,不会有意执行 PE 入口点或 TLS 回调。

文档

  • 文档索引
  • 源码来源
  • 功能
  • 内存提供程序
  • 测试
  • 二进制文件和命令行用法
  • 真实场景测试
  • 语料库结果
  • NativePe 与 libpeconv 对比
  • 第三方声明

项目状态

NativePe 被积极用作研究和测试项目。随着新的 PE 边缘情况被发现,API 和实现细节可能仍会发生变化。

广泛的测试可以降低风险,但并不能证明完全正确。请将不受信任的 PE 文件视为不受信任的输入,并在处理恶意软件时使用适当的隔离措施。

许可证

NativePe 的原创贡献在 MIT 许可证 下发布。

源自第三方项目的代码保留 THIRD-PARTY-NOTICES.md 中所述适用的上游声明和许可条件。

下载工具