工具集:pe_to_shellcode【将PE文件转换为shellcode】

admin 2025年2月8日01:19:39评论15 views字数 1107阅读3分41秒阅读模式

工具介绍

将PE文件转换为可以像普通shellcode一样注入的形式(同时,输出文件仍然是一个有效的PE文件)。支持32位和64位的PE文件。

目标

这个项目的目的是提供一种可能性,能够以最小的努力生成可以被注入的PE文件。它受到Stephen Fewer的ReflectiveDLLInjection的启发,但不同之处在于,使用pe2shc,你可以在编译后添加反射加载桩(stub)。此外,PE文件的头部被修改为可以从注入缓冲区的最开始处直接执行——就像处理shellcode一样。它会自动找到桩(stub),并继续加载完整的PE文件。

🟢 该桩(stub)仅支持PE格式的基本结构,例如:

  • 重定位(relocations)

  • 导入表(imports)

  • TLS回调(在执行入口点之前调用一次)

请注意,尽管对于大多数PE文件来说,这些功能已经足够,但你可能会遇到一些使用了PE格式更复杂特性的可执行文件。这意味着,并非所有的PE文件都能成功转换为shellcode。

🚫 目前不支持的元素示例:

  • 异常处理(如果你转换的可执行文件作为shellcode运行并抛出异常,将无法找到相应的异常处理器,应用程序将会崩溃)

  • 延迟加载导入(仅实现了基本的导入表支持)

  • MUI文件(如果你转换的可执行文件需要从MUI文件加载某些GUI元素,将无法正常工作)

构建版本

📦 ⚙️ 下载最新版Release。

工具集:pe_to_shellcode【将PE文件转换为shellcode】

克隆

使用递归克隆以获取包含所有子模块的仓库:

git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git

如何使用

1.使用 pe2shc.exe 将您选择的 PE 文件进行转换:

pe2shc.exe <path to your PE> [output path*]- optional

如果PE文件成功转换,pe2shc会告知您输出文件保存的位置。

[+] Saved to file: <converted file>

2.使用 runshc.exe(*) 来运行输出文件并检查转换是否成功。

runshc.exe <converted file>

(*)警告:请记得使用与您转换后的应用程序位数(32位或64位)相匹配的runshc版本,否则应用程序将会崩溃!

3.如果文件能够像原始PE一样运行,这就确认了转换是成功的!现在您可以像使用shellcode一样使用转换后的PE:将其注入到目标进程中,并从缓冲区的开头开始执行。无需额外的PE加载器。同时,您仍然可以将转换后的文件作为普通的PE文件使用。

原文始发于微信公众号(风铃Sec):工具集:pe_to_shellcode【将PE文件转换为shellcode】

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年2月8日01:19:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   工具集:pe_to_shellcode【将PE文件转换为shellcode】https://cn-sec.com/archives/3703621.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息