SignCopyTool是一个Windows平台下的命令行工具,用于将exe中的资源和数字证书从一个文件复制到另一个文件。
- 复制PE文件中的所有资源(包括图标、版本信息、字符串表等)
- 提取并复制数字证书(签名信息)
- 命令行界面,易于集成到自动化流程中
- Windows操作系统
- Visual Studio 2019或更高版本
- Windows SDK
SignCopyTool/
├── CopyTool/
│ ├── CopyTool.cpp # 主程序源代码
│ ├── test.vcxproj # Visual Studio项目文件
│ ├── test.vcxproj.filters # 项目筛选器文件
│ └── x64/ # 编译输出目录
└── README.md # 本说明文件
- 打开Visual Studio
- 打开
CopyTool.sln解决方案文件 - 选择目标配置(Debug或Release)和平台(x64或Win32)
- 按F7或点击"生成" → "生成解决方案"
编译后的可执行文件将位于CopyTool/x64/Debug/或CopyTool/x64/Release/目录下。
编译完成后,可以通过命令行运行工具:
CopyTool.exe <源文件路径> <目标文件路径>示例:
CopyTool.exe "C:\source\app.exe" "C:\target\app_modified.exe"这将会:
- 将
app.exe中的所有资源复制到app_modified.exe - 如果
app.exe有数字签名,也会将其复制到app_modified.exe
- 源文件和目标文件都必须是有效的PE文件
- 目标文件将被直接修改,请在操作前备份重要文件
- 工具需要对目标文件具有写权限
- 在某些情况下,复制证书可能会使目标文件的数字签名失效,这取决于目标文件的原有签名状态
ExtractCertificateBlob: 从PE文件中提取证书WriteCertificateBlobToFile: 将证书写入PE文件EnumTypeProc,EnumNameProc,EnumLangProc: 资源枚举回调函数
myCopyContext: 用于在资源枚举过程中传递上下文信息