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

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

    有什么用?:

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

    缺点:

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

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

    C:UsersAdministrator>certutil.exe /?
    
    动词:
      -dump             -- 转储配置信息或文件
      -asn              -- 分析 ASN.1 文件
    
      -decodehex        -- 解码十六进制编码的文件
      -decode           -- 解码 Base64 编码的文件
      -encode           -- 将文件编码为 Base64
    。。。
    
    

    用法如下:

    我用一个小mp3文件示范:

    第一步,先cmd中执行certutil -encode 编码文件:

    E:GameNew Heroes3Mp3>certutil -encode hello.mp3 hi.bat
    

    ↑↑↑上面的命令行执行完后,得到一个文件hi.bat,用记事本能看到一大串,base64的字母。

    第二步,用编辑器打开hi.bat,

    不要修改文件其中的内容,只在文件头部写入你自己的批处理代码,用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-----
    
    

    原理:

    观察可以知道,文件中 从"-----BEGIN CERTIFICATE-----" 之后的内容是base64编码,
    而certutil 会忽略其它内容,这个标签才开始解码base64。

    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. 》 http://ss64.org/viewtopic.php?id=1562
    用 certutil 实现 Hex2Bin 和 Base64 加解密 http://www.bathome.net/thread-31883-1-1.html

  • 相关阅读:
    汇编语言 第三章 寄存器
    汇编语言 第二章
    实验一 查看CPU和内存,用机器指令和汇编指令教程
    nginx的log、upstream和server
    高并发情况下Linux系统及kernel参数优化
    二进制方式安装docker(非root用户启动docker)
    redis
    redis配置文件详解
    Keepalived+LVS实现LNMP网站的高可用部署
    Nginx location相关配置说明
  • 原文地址:https://www.cnblogs.com/gayhub/p/5832836.html
Copyright © 2011-2022 走看看