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

一个加密批处理文件的代码

这段代码可以对批处理文件做最简单的加密,加密代码如下:

  1. @ECHO off
  2. cls
  3. color f0
  4. echo.
  5. echo.
  6. ECHO                批处理文件(.bat .cmd)加密工具
  7. echo.
  8. echo.
  9. echo 说明: 在下面输入需要加密的批处理文件名
  10. echo.
  11. echo       若在此文件的同目录下直接输入“文件名.bat”即可
  12. echo.
  13. echo       也可以带路径指定任意BAT
  14. echo.
  15. echo       加密完成后会在同目录下生成“加密成品.bat”文件
  16. echo.
  17. echo.
  18. echo.
  19. echo.
  20. set /p file=请输入需要加密的批处理后(名+后缀)按回车键(Q=退出):
  21. if "%file%"=="q" goto quit
  22. echo %file%|findstr /i "\.bat$">nul && goto go
  23. echo %file%|findstr /i "\.cmd$">nul && goto go
  24. cls
  25. echo ==============
  26. echo 请正确输入!
  27. echo ==============
  28. echo.
  29. echo.
  30. echo 按任意键重新输入......
  31. pause>nul
  32. goto start
  33. :go
  34. if not exist "%file%" goto newly
  35. if exist encrypt.bat copy encrypt.bat encryptbak.bat
  36. echo %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a %%%%a >"%tmp%\encrypt.tmp"
  37. echo cls>>"%tmp%\encrypt.tmp"
  38. type "%file%">>"%tmp%\encrypt.tmp"
  39. setlocal enabledelayedexpansion
  40. for %%i in ("%tmp%\encrypt.tmp") do (
  41.      echo %%~zi >nul 2>nul
  42.      set size=%%~zi
  43.      set num=!size:~-1!
  44.      set /a mod=!num!%%2
  45.      if !mod! equ 0 (goto even) else (goto odd)
  46. )
  47. :even
  48. copy "%tmp%\encrypt.tmp" 加密成品.bat
  49. del "%tmp%\encrypt.tmp"
  50. cls
  51. echo         ===============================
  52. echo          恭喜, 批处理加密成功!
  53. echo         ===============================
  54. echo.
  55. echo.
  56. echo 按任意键退出......
  57. pause>nul
  58. goto quit
  59. :odd
  60. echo. >>"%tmp%\encrypt.tmp"
  61. copy "%tmp%\encrypt.tmp" 加密成品.bat
  62. del "%tmp%\encrypt.tmp"
  63. cls
  64. echo         ===============================
  65. echo          恭喜, 批处理加密成功!
  66. echo         ===============================
  67. echo.
  68. echo.
  69. echo 按任意键退出......
  70. pause>nul
  71. goto quit
  72. :newly
  73. cls
  74. echo ================================
  75. echo 找不到批处理文件, 请重新输入!
  76. echo ================================
  77. echo.
  78. echo.
  79. echo 按任意键开始......
  80. pause>nul
  81. goto start
  82. :quit
  83. exit
复制代码


这段代码是利用记事本的文本编码混淆原理,通过添加许多个%%a来实现加密。使用该批处理加密过的文件,用记事本打开是乱码,但可以正常运行,与原批处理相同。

解密代码如下:

  1. @ echo off
  2. color f0
  3. title 批处理解密工具
  4. set /p a=请输入要解密的批处理文件(请放到当前目录下):
  5. echo 解密后文件.bat即为解密之后的文件!
  6. pause
  7. type %a%>解密后文件.bat
  8. echo 解密完成!
  9. pause
  10. exit
复制代码


这一段代码主要利用了type和记事本的区别:type不会识别你的文件编码,文件该是什么样还是什么样;而记事本就不能如此。如果这段代码写的有错误,那么打开cmd.exe,直接输入
  1. type 文件名.bat>新文件名.bat
复制代码


这样也可以解密文件。
1

评分人数

回复 2楼 的帖子

我的代码功能是加密批处理文件并能使之正常执行,而非把两个文件结合。

TOP

回复 3楼 的帖子

这个应该是通过自定义nfile变量而自定义文件名吧?

TOP

返回列表