当前位置: 移动技术网 > IT编程>网络>Dos/Bat > 利用certutil.exe实现在批处理(bat)中嵌入exe文件的方法

利用certutil.exe实现在批处理(bat)中嵌入exe文件的方法

2017年12月08日  | 移动技术网IT编程  | 我要评论

艾美克,600877资金流向,杨贵媚

利用certutil.exe实现在批处理(bat)中嵌入可执行文件或者各种媒体、图片之类二进制文件的简单方法!

实际上利用certutil.exe 把二进制文件(包括各种文件,exe可执行程序,图片,声音,mp3) 经过base64编码为文本,可以实现把这些文件嵌入到批处理代码中。

###有什么用?:
举个例子,批处理经常需要依赖其它命令行工具实现自动化脚本,如果把这些工具转成文本嵌入到代码中,贴到网上就可以直接把可用的代码发出去了。不需要上传附件。

###缺点:
base64编码后的文本比原文件长1/3,加上如果依赖的文件体积大,转换出来的文本内容会非常长。这个缺点影响了这个玩法的实用性。
xp 中没有certutil 这个工具,影响了适用范围。
如果依赖多个文件,需要用winrar 打包成exe 自解压文件,然后再编码。

certutil 是一个证书工具,功能挺丰富的,参数非常多,我这里只截取和base64编码相关的帮助信息:

```
c:\users\administrator>certutil.exe /?

动词:
 -dump    -- 转储配置信息或文件
 -asn    -- 分析 asn.1 文件

 -decodehex  -- 解码十六进制编码的文件
 -decode   -- 解码 base64 编码的文件
 -encode   -- 将文件编码为 base64
。。。

##用法如下:
###第一步,先cmd中执行命令编码文件,我用一个小mp3文件示范:
```
e:\game\new heroes3\mp3>certutil -encode hello.mp3 hi.bat
```
###第二步,命令行执行完后,得到一个hi.bat,用记事本能看到一大串,base64的字母。
不要修改文件其中的内容,只在文件头部写入你自己的批处理代码,用certutil -decode把文本还原为文件,
如果你把以下代码存为xx.bat 并运行,应该可以听到这个mp3文件的声音。

@echo off
certutil -decode "%~f0" hello.mp3
start hello.mp3
exit /b 1


-----begin certificate-----
/+mgxaaucqzga0yyalhaemecceeczno7u7vgiiii/7u7u6inxe57v+j+ifobiz4g
cdgylhmlv+oh35qep5tqb8//8hdgnb/g+d5d/8oc8v+ub+gjr3bcjw+xd/8u8eea
qaaucgucgud/4ylecrwrptjfjuaaofaofae997lwj35twn+wfemd/m3tcjikauh6
tho2rqka0mq986vujkj97ehhiraoifaakdh4y9/0qdb/8utjp/nl/oh7w+go9h63
/8uvyygeana26x/fy2gtjax/4ydedhed7u4fxygdhs/mgecxznohxh2850fa0vv8
7ixf0cit7uux60mchn/re+lujdvexllze60ouz/sv///t/nvpaliarizxxvxf/83
/dzngrkrmk6v/rr2vcebkmxsptrrs/1hqf/jisqlfzrm/j44rn4bj/rrw02+aael
8jcepgncel9hcemhxcd/pnitpuvbka2kmaii6dpt9xrovun///r/dws0uwmdwzai
db0frhplf5xuxr1tdbqz9afkybqahig2n388oiijitv9l//jimqqgalw5x5sbjog
or3puwsaualjkf+bifkv2lbp7vbtyjho/1chdnf/hgvyse0jfrmime9gp79eyf7f
////3koc5zgy4qqqmcaeho1dppxi6wmzmo4ad7hf6iegaspg3ab9squd/+mixasw
c771/ihfvom39dv+ysohcfkupbmu+gshyfefnddctciaf5poyp+ahnetrkvzixn9
powa9f/2nd7hawcwqixlr0d15e9x2r7///2pedettijkdmrg3d4hcam0ko/2jdkg
yfig/+mgxa0xs7lh9lhe+7hh/5qmh/zaibl/opitv9qqx23u44c3+p4ebuupxgjl
/ki//ifbp9f+5fb/t/kqopwr2szbart/p/6f/9v+jfnjmqqims6kwxgvxqvjcbjt
1yziah2kov5gvip/4ylechrzavv+ckrcmix/dgrf5wmcaw/3k/9smf+iobznoqp+
qfmka0h0az6osadpshwubcqdsfnhtv/8ykee8ffvjdzwe7/w1zmxvlkblhse9inq
ep/zescfzexjvxsbiewhqppeyp3/4ydefbqzlsgkaxkqiwvr2besnjnmdgwnza7r
iktwdhnyqgererjputsxjtt2e2nndmh589zfkamh4kig5h////aujk////9vnqhv
//3/fcfj3lceehvp7kxqkjnfddsqogetipy2wp/jisqefecg1b5stibwkhommton
jhau6snhj9va0vggjbestssq/+zg8rq6w2gjx14amdv7p/sm7s/vlu/p/e8hbbbz
/myx5iugggyx1cxinsdgvqq+hrasb9hjdi0cioclm2h3yxcec//jimqpfhdexb9q
kadmbezdo1aihav2rfoqxorhvigz7xxezcxdwjjkbzdtrwawbtiufbotrzptsobk
6nzfkdformjkrrt1p39vw9ascwqipti09rkru1zxuigkqjb8b0irq8nies/4/+mi
xdixkxakazhaakk3f/n/c8ssir0vfmymihuyyqtcrk//vsd1uentpt2/7/p/3vrf
z+vov91a1qd3sesiyyvjqpftaklxcsfn86wvzzvmrjeyqjnryyfyzpzbswznjfwg
aorqvqou/+mgxc8fw2j8y5haagnvhmj/yq9dkagkizvdmn//gdyjxxvivyzpvy//
/u7hujmruyzsqwzsqx///+cqipc050k5tszardxkrw3/////axnstwrwucoklitx
//4leuxwccakafcfby7/4ylecxrq9kqxybaagirkkmrsx1q1///kxk3q3//ll///
/kx//0no/kxl//mbmbupxl/5s0mzkmbkuu1dvllkwhhqwgoknejykueqclfro8gv
8spmqu1fmy45ni4xqqqqqqqqqqqqqqr/4ydefqaaa0gaaaaaqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqg==
-----end certificate-----

2016年8月31日 22:52:03 codegay
windows 2012 server x64 测试可行。xp上不带certutil,听说2000以上的系统才带有这个命令工具。使用其它系统的同学,如果可以请测试反馈一下是否可行。

扩展阅读
certutil - decode/encode base64/hex strings.print symbols by hex code. 》
用 certutil 实现 hex2bin 和 base64 加解密

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网