[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 关于批处理加密的新方法

本帖最后由 HOPE2021 于 2021-8-9 10:16 编辑

大家好,由于我是新人,发帖有些拘束,请谅解。
今天,我发现了批处理加密的一种新方法。[Tips:这种命令只有x64平台的一些操作系统可以使用,不过加密后的批处理x86平台也可以使用,测试环境:Windows 7 x64 ; Windows 10 x64;Windows XP Sp3 x86]
在了解这种加密方法之前,首先需要了解什么是Certutil,[传送门:用 certutil 实现 Hex2Bin 和 Base64 加解密 - BAT教程&资料 - 批处理之家 批处理_BAT脚本_PowerShell_VBS_CMD_DOS_Perl_Python - Powered by Discuz! (bathome.net)]
Certutil实质上是用来管理证书的,但由于可以将文本加/解密成Base64/十六进制机器码,所以有些“歪门邪道”的用法。
说了这么久,下面开始介绍这种加密的方法:
首先,我们准备一个 .bat 或 .cmd 文件,这里我采用Hello,World.bat做讲解,源码如下:
  1. Rem 第一条千万不要是有实际意义的语句,不然批处理会损坏!
  2. @echo off
  3. Rem 关闭回显
  4. chcp 936 > nul
  5. Rem 调整语言设置成中文简体,GBK字符编码
  6. endlocal
  7. Rem 关闭当前变量延迟的改动
  8. setlocal disabledelayedexpansion
  9. Rem 禁用变量延迟
  10. Mode Con:Cols=80 Lines=25
  11. Rem 调用 Mode.com 调整控制台窗体大小至长80个半角符号,宽25个全角符号
  12. color 0f
  13. Rem 调用 Color.exe 调整控制台窗体颜色,让背景色为黑色,前景色为白色
  14. cls
  15. Rem 清屏
  16. title Hello,World!
  17. Rem 将控制台窗体的标题改为" Hello,World! "
  18. echo.&echo.&echo.    Hello,World!
  19. Rem 输出两个空行,以及" Hello,World! "
  20. echo.&echo.    请按回车键退出...
  21. Rem 输出一个空行,以及"请按回车键退出..."
  22. pause > nul
  23. Rem 按任意键(中文输入法下某些键需要再按一次回车,此处为了让不懂批处理的用户能够每次操作成功,所以帮助信息是"请按回车键退出...")
  24. exit
  25. Rem 退出
复制代码
然后,Win+r,打开命令提示符,进入到批处理的目录下,键入如下命令:
  1. Certutil -encodehex -f Hello,World.bat Hello,World.bat
复制代码
效果如下:
  1. G:\BatHome>Certutil -encodehex -f Hello,World.bat Hello,World.bat
  2. 输入长度 = 792
  3. 输出长度 = 3692
  4. CertUtil: -encodehex 命令成功完成。
复制代码
这个时候,我们的批处理已经解析成了十六进制机器码,前两行如下:
  1. 0000 52 65 6d 20 b5 da d2 bb  cc f5 c7 a7 cd f2 b2 bb   Rem ............
  2. 0010 d2 aa ca c7 d3 d0 ca b5  bc ca d2 e2 d2 e5 b5 c4   ................
复制代码
然后,我们将前两个字节改为 ff fe (千万不要改成 fe ff 否则用type 就可以解析一切) ,也就是:
  1. 0000 ff fe 6d 20 b5 da d2 bb  cc f5 c7 a7 cd f2 b2 bb   Rem ............
  2. 0010 d2 aa ca c7 d3 d0 ca b5  bc ca d2 e2 d2 e5 b5 c4   ................
复制代码
接着,我们再还原批处理,键入以下命令:
  1. Certutil -decodehex -f Hello,World.bat Hello,World.bat
复制代码
效果如下:
  1. G:\BatHome>Certutil -decodehex -f Hello,World.bat Hello,World.bat
  2. 输入长度 = 3692
  3. 输出长度 = 792
  4. CertUtil: -decodehex 命令成功完成。
复制代码
接着我们看加密过的 Hello,World.bat (乱码太长了,这里只取两行):
  1. �믒Ꟈ뮲꫒쟊탓뗊쪼쒵눬좻얻듺삦믭쯡믰ꎵඡ䀊捥潨漠晦਍敒�햱�퓏਍档灣㤠㘳㸠渠汵਍敒ﯕ퓑쏖즳탖쓎겣䉇흋럖뇻신෫攊摮潬慣൬刊
复制代码
怎样,批处理加密成功!我们可以尝试运行批处理代码,看看批处理有没有损坏:
  1.     Hello,World!
  2.     请按回车键退出...
复制代码
没有任何损坏!

但有没有解密的方法呢?有!

用 MsWord 365 打开bat 文件,编码选Windows默认,即可解读。

划重点:

1.        加密的原理,前两个字节储存着文件的编码信息,改变前两个字节即可改变文件的编码。
2.        加密的优劣:
优:
这种方法相较于将一大堆%%a加入文件的方法相比,用type指令无法解析,
劣:办公常备软件MsWord即可解析。
3.        请不要用这种加密方法做不法行当。

By HOPE2021
谢谢。

回复 4# HOPE2021


    我没有
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 3# cmd1152
实际上用MsWord就可以解析了...

TOP

解密方法:
输入Certutil -encodehex -f Hello,World.bat Hello,World.bat
把0000那一行删除
输入Certutil -decodehex -f Hello,World.bat Hello,World.bat
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

这种方法我有解密程序了...
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

返回列表