BinHol 是一个强大的二进制文件修改工具,专门用于在 Windows PE(可执行)文件中插入自定义代码。这个项目提供了三种不同的代码注入技术,使用 Go 语言实现,为安全研究和软件测试提供了灵活的解决方案。
注:本README由AI生成,内容可能需要进一步人工审核和修改。
- 修复bug
- function模式支持golang exe对于初始化阶段的patch
- 支持对于dll导出函数的patch
- 加入证书表处理
- function模式动态适配函数大小
- 支持三种不同的代码注入方法:
- 函数补丁(Function Patch)
- 入口点劫持(Entrypoint Hijack)
- TLS 注入(TLS Injection)
- 可选的数字签名处理
- 动态适应函数大小(在函数模式下)
- 证书表处理
- 命令行界面,易于使用
- 无需依赖 Capstone/Gapstone 库
- 确保你的系统上安装了 Go 编程语言(推荐 Go 1.15 或更高版本)。
- 克隆仓库:
git clone https://github.com/timwhitez/BinHol.git
- 进入项目目录:
cd BinHol
- 编译项目:
go build -o binhol.exe main.go
基本用法:
binhol.exe [-sign] <injection_method> <target_pe_file> <shellcode_or_pe_file>
参数说明:
-sign
:可选参数,用于处理数字签名<injection_method>
:注入方法,可选function
、entrypoint
或tlsinject
<target_pe_file>
:目标 PE 文件路径<shellcode_or_pe_file>
:包含 shellcode 或要注入的 PE 文件路径
示例:
-
函数补丁方法:
binhol.exe function .\7za.exe .\calc.text binhol.exe -sign function .\7za.exe .\calc.text
-
入口点劫持方法:
binhol.exe entrypoint .\7za.exe .\calc.text binhol.exe -sign entrypoint .\7za.exe .\calc.text
-
TLS 注入方法:
binhol.exe tlsinject .\7za.exe .\calc.text binhol.exe -sign tlsinject .\7za.exe .\calc.text
- 函数补丁:修改目标 PE 文件中的特定函数,插入自定义代码。
- 入口点劫持:修改 PE 文件的入口点,使其首先执行注入的代码。
- TLS 注入:利用 Windows 的线程本地存储(TLS)机制注入代码。
每种方法都有其特点和适用场景,可以根据需要选择合适的注入技术。
- 本工具仅用于教育和研究目的。在实际使用中,请确保遵守相关法律法规。
- 修改二进制文件可能会导致目标程序不稳定或无法运行,请谨慎使用。
- 建议在使用前备份目标 PE 文件。
- 某些防病毒软件可能会将修改后的文件标记为潜在威胁。
- 函数补丁方法参考了 BinarySpy 项目
- TLS 注入方法参考了 sakeInject 项目
- 入口点劫持方法基于作者之前的进程注入项目
特别感谢以上项目的作者们的开源贡献。