You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过批处理脚本内嵌十六进制代码构建exe程序及相关问题咨询

背景说明

我正在开发可点击运行的批处理文件,目前通过批处理扩展插件实现了目标需求,用到的脚本如下:

for %%b in ( 
4D534346000000005A040000000000002C000000000000000301010001000000
000000004700000001000100000800000000000000006546F2B1200062617462
6F782E65786500D7E54E4C0B040008434BB5555F685B55183F499BA06D4DB235
295311EFA4151C23E04A7C2854B2759D8EA51A92B88A14BAFCB9C9BD697A6FB8
B9B19DF32123093223F8361FF6B212F0C597227B98A26C359382B46FC38789FB
F7306E9C6011FF14D15E7FDFB9376D26854DD093FCCE39DFEFFBCE777EE7BBE7
26536F55988331D6CB7CCC34190B938116660F6F15C0F3ECE71E76E9F1F5FD97
1D91F5FD09492E09454DCD69C979219D5414551752A2A09515415684A3AFC785
793523069FE81BEEE4884E32167138D8DBAB9B890E779B791DFD0EC731E686E1
B6495F17481D8D4EC66CB9D06F37C1E2477E66ACA77BDD76A46DDAEDC341C6E6
9C8F70D8FFB805B385A48EF190DB16E4B67477B753548AFFB9497D436196B706
692B80EE0F74662083BE7ACD9FFFD50C44FC61D67453D86FB6E1A4E00A0A2A39
CFA27B6F9056E87CC54075D3F4D6AEE224CD202DF1492F913744861978D78A31
62F04FBC3F58F94678D1CC7E36C0C63E3A83286F6D14FC2BB9BB1BED1BA6691A
7B6045CD909B2F4D60E3760B74E58C63D65BF740BB1928205FFDAAB7F6097833
700AD63855CC5BEFE76E225CB8D4ACD940FAF62F506C7C81AEC745A29A2FA3CB
363D486F7CCCD931628F70D6479B863CBCB704BC49028E90AED3085E751D1BB4
DE91264D24DEBDC00B31835DDB4F52E01C02E35D6CF5DA636D468E35ACFBDDF5
1CF2FE05D35BBF8F7EE9A921EB303729E24744B4AF6F61761133E37B32BF26F3
4F7A69703452738988FBA481CE63DCA1199DA17D010EE9F92EF112C28D15F21F
A067D7EDCA50A63C655A82FFDC2AAA0A661A7B0C90270A8FE9A2A22CEDD46B69
A748ED6F1190DF67869C3C5B146BAC3BE590F6F25D2C7E067C759C1C78CCEB48
99AD8E93DFE9AD5F81D56A8C0FC13AB7B5F293EFEC3DFA21EAE1E5894E9F940E
76D5CFD73286A0328F4FDC0C14ADEBD43287BF3C81A0AA8B2E706FE3191A1A4F
D7BFF3D6E8A56FE5B7EF5FCD7A08FFB8958B569A8E59E166AF196AF08D25CB1C
29B191CC18FFF6EDFE2A7DEA0BB30D60744F985DC03883B10CAC00CBC00DA07F
2F8A877104E35C2E99CECCAB0B52F1B4124CA5788E83819D7CB7F0D334037BD8
BFC3FD002E02BBB78BDB0437E0DF5DD354FCE4442C113C1A89B01393B1D72623
A387B8C1DE884FC63A73BFBDD8BF9D242EA90BD3B2925117C8D2C1D780F3C032
B006DC060C8A87C07DB6E8478DC33B2EEA713DF36A52C91444BE9FA84FA84A49
2D8853F87F789049888BFA615DD7E45459171FF04C94B592AA45D592ACCBAA42
AB626232633B8F2BC5B27E98E20BA258DC65DD7125ABDA5A1EC2772AF101F49F
072E02CBC065E02B600DB80EDC04EE011BF639FF6D3C63454D56F42CCD6673A2
9E96F88CA6F34959496AB9126C7151D6393F9792AC5949D774B5C039B5285221
66173499178BCD6A28098DE9825AB298B45492DF11EDBFBCBF01            
) Do >>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
ECHO WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
Cscript /b /e:vbs t.dat>batbox.ex_
Del /f /q /a t.dat >nul 2>&1
Expand -r batbox.ex_ >nul 2>&1
Del /f /q /a batbox.ex_ >nul 2>&1

以上脚本可构建生成batbox.exe。将上述脚本复制粘贴到批处理文件后,我想要实现自定义批处理脚本构建exe程序的需求,查阅相关开发资料后得知代码中的字符串为十六进制代码,现有如下脚本模板:

For %%A in (
<hex code>
) DO >>t.dat (Echo.For b=1 To len^("%%b"^) Step 2
    ECHO WScript.StdOut.Write Chr^(Clng^("&H"^&Mid^("%%b",b,2^)^)^) : Next)
    Cscript /b /e:vbs t.dat>sample.ex_
    Del /f /q /a t.dat >nul 2>&1
    Expand -r sample.ex_ >nul 2>&1
    Del /f /q /a sample.ex_ >nul 2>&1
问题解答

1. 如何从现有exe程序中提取对应的十六进制代码?

你可以直接用Windows系统自带的certutil工具完成提取,无需安装第三方软件,操作步骤如下:

  • 先把你要封装的exe用makecab命令做CAB压缩,适配模板里的Expand解压逻辑:执行makecab 你的目标程序.exe 压缩后.cab
  • 再对压缩后的cab文件提取十六进制:执行certutil -encodehex 压缩后.cab output.hex 4,得到的output.hex里就是连续无额外格式的十六进制字符串
  • 把生成的十六进制字符串拆成和示例中长度相近的行(比如每行64个字符),替换掉模板里的<hex code>即可。

2. 该种通过批处理内嵌十六进制代码构建exe的方案是否通用,是否可以在所有场景下正常运行?

该方案不通用,存在多个限制条件,以下场景无法正常运行:

  • 仅支持Win7及以上版本系统,Win XP及更早系统没有预装对应版本的cscript、certutil工具,无法执行
  • 企业办公环境如果通过组策略禁用了WSH(Windows脚本宿主,即cscript/wscript)的执行权限,脚本会直接运行失败
  • 该方案属于动态释放PE文件的行为,绝大多数杀毒软件都会对该行为做拦截,生成的exe大概率会被直接查杀删除
  • 如果要封装的exe体积过大(超过2MB),批处理处理大段字符串的效率极低,会出现长时间卡顿甚至崩溃的情况
  • 部分系统环境会限制批处理生成可执行文件的权限,或者对临时目录做读写限制,也会导致生成exe失败。

内容的提问来源于stack exchange,提问作者blur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:15:05