pe_to_shellcode - 让PE文件像shellcode一样注入运行
项目介绍
pe_to_shellcode
是一个开源工具,由@hasherezade和@hh86共同开发。它能够将PE(Portable Executable)文件转换成可以在目标进程中像shellcode那样直接注入并执行的格式。这种转换后,PE文件保持其原始结构的同时,添加了反射加载的stub,使得注入更为便捷。
项目技术分析
- 支持32位和64位PE文件。
- 转换过程中,会修改PE头以允许从缓冲区开始处执行,如同shellcode一般。
- 包含基本的PE格式支持,如重定位、导入表和TLS回调函数。
该工具利用反射机制来加载PE文件,通过调整头部信息,确保即使在被当作shellcode注入到其他进程时,仍能正确执行。然而,对于那些依赖更复杂PE特性(如异常处理、延迟加载的导入或MUI文件等)的文件,可能无法成功转换。
应用场景
pe_to_shellcode
在以下场景中特别有用:
- 安全研究:用于测试代码注入攻击,理解和防御这类威胁。
- 模拟注入环境:在不实际注入的情况下,验证代码是否能在目标环境中运行。
- 系统调优:为低级别系统操作创建轻量级PE执行体。
项目特点
- 通用性:适用于多种类型的PE文件,包括32位和64位。
- 简洁的转换流程:通过简单的命令行接口即可完成转换,无需额外编程。
- 完整度:尽管有部分限制,但大多数基础PE结构都能被正确处理。
- 兼容性:转换后的PE文件既可以作为shellcode使用,也可继续作为常规PE文件运行。
使用步骤
- 运行
pe2shc.exe
并指定要转换的PE文件路径。 - 使用与目标应用程序相同位数的
runshc.exe
运行转换后的文件进行校验。 - 如果运行正常,转换即告成功,可将其作为shellcode注入。
获取项目
访问GitHub发布页面,下载最新版本,或者使用Git克隆项目(包括所有子模块):
git clone --recursive https://github.com/hasherezade/pe_to_shellcode.git
pe_to_shellcode
提供了一种创新的方式来处理PE文件,不仅简化了shellcode的制作过程,也为深入理解PE文件加载机制提供了工具。如果你在工作或学习中需要处理PE文件,这是一个值得尝试的工具。