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

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

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

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

工具目录

分类

查看所有分类
Loading categories
PMD — 实用的 Windows 恶意软件开发课程:API 哈希、DLL 旁加载、shellcode 执行、PE 操作、payload 托管和投递实验。 | Kitploit
工具/GitHubGitHub/rad9800/pmd
逆向工程Shellcode恶意软件分析二进制分析学习与教育红队Shellcode 生成Payload 开发实验室与实践
GitHubrad9800/pmd

PMD

实用的 Windows 恶意软件开发课程:API 哈希、DLL 旁加载、shellcode 执行、PE 操作、payload 托管和投递实验。

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

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

实战恶意软件开发

练习 1 - 环境搭建

  1. 在虚拟机管理程序中设置一台 Windows 虚拟机。 a. 确保对基础安装创建快照。
  2. 下载并安装 Visual Studio 2022 - https://visualstudio.microsoft.com/vs/ a. 安装时选择 Desktop development with C++ 工作负载
  3. 下载并安装:
    • DebugView++ - https://github.com/CobaltFusion/DebugViewPP
    • PE Bear - https://github.com/hasherezade/pe-bear
    • ProcMon - https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
    • Ghidra - https://www.ghidra-sre.org/
    • Everything - https://www.voidtools.com/

另外(可选),为了获得更完整的逆向体验,请配置符号:

setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols

mkdir \symbols

  1. 在 Visual Studio 中打开 PMD.sln。

  2. 选择 setup 项目,并确保你可以:

    a. 编译项目

    b. 在 DebugView++ 中查看调试打印输出。

练习 2 - 理解 PE 属性

  1. 更新 template 项目的编译器和链接器标志,以操纵 IAT 条目和其他 PE 属性。

    a. 熟悉动态 API 解析和 MSDN 文档。

    b. 还有其他突出的属性吗?如果你对二进制文件运行 Strings.exe,有哪些字符串比较显眼?

    c. 你能移除/更新它们吗?

使用你选择的任何工具来完成练习(例如 dumpbin/PE Bear)。在 scripts\props.py 下提供了一个围绕 pefile 的封装(确保安装依赖)。

  1. 从 VXUG 下载一些恶意软件样本

    a. 良性可执行文件和恶意可执行文件之间的主要区别是什么?

    b. 我们的二进制文件与良性可执行文件之间的主要区别是什么?

更多资源

  • https://learn.microsoft.com/en-us/cpp/build/reference/dumpbin-reference?view=msvc-170
  • https://learn.microsoft.com/en-us/windows/win32/debug/pe-format
  • https://learn.microsoft.com/en-us/previous-versions/ms809762(v=msdn.10)
  • https://cloud.google.com/blog/topics/threat-intelligence/tracking-malware-import-hashing/
  • https://github.com/rad9800/misc/blob/main/generic/fix-entropy.cpp
  • https://github.com/rad9800/misc/blob/main/generic/stack-strings.cpp

练习 3 - 编译时 API 哈希

当前使用的 API 哈希算法是 fnv1a。

  1. 打开 solution 项目,并使用 API 哈希框架调用 MessageBoxA。
  2. 使用不同的哈希算法,并确保你仍然可以调用 MessageBoxA。

更多资源

  • https://github.com/vxunderground/VX-API/tree/main/VX-API
  • https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxa

练习 4 - 发现并利用 DLL 劫持

  1. 下载 Cisco Webex (https://www.webex.com/downloads.html)

  2. 找到 CiscoCollabHost,并查看加载了哪些 DLL

    • 使用 Procmon/PE Bear/Ghidra 或者任何工具!
  3. 在 Ghidra 中打开 CiscoCollabHost,找出通过侧加载实现代码执行的不同方式

  4. 编辑 dll_template 以侧加载目标二进制文件。验证你可以在 DebugView++ 中看到调试字符串。

  5. 更新 dll_template.dll 的 LastWriteTime 和 CreationTime,使其与目标 DLL 匹配。

更多资源

  • https://hijacklibs.net/
  • https://github.com/sadreck/Spartacus

练习 5 - Shellcode 执行

  1. 编译并运行 utility 项目。

    a. 另外,考虑在你的主机系统上运行它。

  2. 将识别出的 DLL 复制到 x64/{Debug,Release} 目录,并更新加载器代码。

  3. 更新 execute_sc,使用 API 哈希框架中的另一个函数来执行你的 shellcode。

更多资源

  • https://github.com/Wra7h/FlavorTown

练习 6 - 综合运用

  1. 创建一个新的 DLL 项目并组合: a. DLL 侧加载 b. 从侧加载执行 Shellcode
  2. 验证你的 PE 属性是否符合预期。
  3. 以 Release 模式编译你的 payload,并以适合投递的格式进行打包。

练习 7 - Payload 托管

  1. 注册一个云存储提供商(例如 AWS/CloudFlare)

  2. 打包你的 payload 并上传

    a. 另外,研究限制/审计下载访问的方法

  3. 为你的虚拟机创建快照

  4. 恢复到基础虚拟机,并演练完整的“投递”场景

    • 例如:引导用户访问 URL 并让他们下载。确保它能正常工作。

练习 8 - 使用 Github Actions 构建 Payload

  1. 使用此项目的内容创建一个 Git 仓库
  2. 验证你可以运行该 Action,并且构建产物能正常工作
  3. 更新 .github\workflows\build.yml,按你的需要添加可以节省时间的额外预处理/后处理。以下是一些想法:
    • 运行 props.py 并验证/包含输出
    • 使用 Python 自动打包 payload
    • 自动更新 LastWriteTime 和 CreationTime 以匹配目标
下载工具