标题: 一个加密批处理文件的代码 [打印本页]
作者: michael8111 时间: 2010-6-13 19:33 标题: 一个加密批处理文件的代码
这段代码可以对批处理文件做最简单的加密,加密代码如下:
- @ECHO off
- cls
- color f0
- echo.
- echo.
- ECHO 批处理文件(.bat .cmd)加密工具
- echo.
- echo.
- echo 说明: 在下面输入需要加密的批处理文件名
- echo.
- echo 若在此文件的同目录下直接输入“文件名.bat”即可
- echo.
- echo 也可以带路径指定任意BAT
- echo.
- echo 加密完成后会在同目录下生成“加密成品.bat”文件
- echo.
- echo.
- echo.
- echo.
- set /p file=请输入需要加密的批处理后(名+后缀)按回车键(Q=退出):
- if "%file%"=="q" goto quit
- echo %file%|findstr /i "\.bat$">nul && goto go
- echo %file%|findstr /i "\.cmd$">nul && goto go
- cls
- echo ==============
- echo 请正确输入!
- echo ==============
- echo.
- echo.
- echo 按任意键重新输入......
- pause>nul
- goto start
- :go
- if not exist "%file%" goto newly
- if exist encrypt.bat copy encrypt.bat encryptbak.bat
- 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"
- echo cls>>"%tmp%\encrypt.tmp"
- type "%file%">>"%tmp%\encrypt.tmp"
- setlocal enabledelayedexpansion
- for %%i in ("%tmp%\encrypt.tmp") do (
- echo %%~zi >nul 2>nul
- set size=%%~zi
- set num=!size:~-1!
- set /a mod=!num!%%2
- if !mod! equ 0 (goto even) else (goto odd)
- )
- :even
- copy "%tmp%\encrypt.tmp" 加密成品.bat
- del "%tmp%\encrypt.tmp"
- cls
- echo ===============================
- echo 恭喜, 批处理加密成功!
- echo ===============================
- echo.
- echo.
- echo 按任意键退出......
- pause>nul
- goto quit
- :odd
- echo. >>"%tmp%\encrypt.tmp"
- copy "%tmp%\encrypt.tmp" 加密成品.bat
- del "%tmp%\encrypt.tmp"
- cls
- echo ===============================
- echo 恭喜, 批处理加密成功!
- echo ===============================
- echo.
- echo.
- echo 按任意键退出......
- pause>nul
- goto quit
- :newly
- cls
- echo ================================
- echo 找不到批处理文件, 请重新输入!
- echo ================================
- echo.
- echo.
- echo 按任意键开始......
- pause>nul
- goto start
- :quit
- exit
复制代码
这段代码是利用记事本的文本编码混淆原理,通过添加许多个%%a来实现加密。使用该批处理加密过的文件,用记事本打开是乱码,但可以正常运行,与原批处理相同。
解密代码如下:
- @ echo off
- color f0
- title 批处理解密工具
- set /p a=请输入要解密的批处理文件(请放到当前目录下):
- echo 解密后文件.bat即为解密之后的文件!
- pause
- type %a%>解密后文件.bat
- echo 解密完成!
- pause
- exit
复制代码
这一段代码主要利用了type和记事本的区别:type不会识别你的文件编码,文件该是什么样还是什么样;而记事本就不能如此。如果这段代码写的有错误,那么打开cmd.exe,直接输入
复制代码
这样也可以解密文件。
作者: ZJHJ 时间: 2010-6-13 20:01
这种方法还会有人用?
也没有必要搞的这么复杂。
wmic logicaldisk "DriveType=3">a.txt
copy /b a.txt + b.txt 加密.txt
一句话就是将ANSI编码的文本拷入Unicode编码的文本.
解密反之亦然。
作者: pclhhwa 时间: 2010-6-13 20:46
你的文件有个错误: 没有start标签。
这是我修改后的bat 可以自定义加密后的文件名内容的bat.
- @ECHO off
- :start
- cls
- color f0
- echo.
- echo.
- echo 批处理文件(.bat .cmd)加密工具
- echo.
- echo.
- echo 说明: 在下面输入需要加密的批处理文件名
- echo.
- echo 若在此文件的同目录下直接输入“文件名.bat”即可
- echo.
- echo 也可以带路径指定任意BAT
- echo.
- echo.
- echo.
- echo.
- echo.
- set /p file=请输入需要加密的批处理后(名+后缀)按回车键(Q=退出):
- if "%file%"=="q" goto quit
- if "%file%"=="" goto start
- :a
- set /p nfile=请输入新的批处理名称:
- if "%nfile%"=="" goto a
- echo %file%|findstr /i "\.bat$">nul && goto go
- echo %file%|findstr /i "\.cmd$">nul && goto go
- cls
- echo ===============================================
- echo.
- echo 请正确输入!
- echo.
- echo ===============================================
- echo.
- echo.
- echo 按任意键重新输入......
- pause>nul
- goto start
- :go
- if not exist "%file%" goto newly
- if exist encrypt.bat copy encrypt.bat encryptbak.bat
- 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"
- echo cls>>"%tmp%\encrypt.tmp"
- type "%file%">>"%tmp%\encrypt.tmp"
- setlocal enabledelayedexpansion
- for %%i in ("%tmp%\encrypt.tmp") do (
- echo %%~zi >nul 2>nul
- set size=%%~zi
- set num=!size:~-1!
- set /a mod=!num!%%2
- if !mod! equ 0 (goto even) else (goto odd)
- )
- :even
- copy "%tmp%\encrypt.tmp" %nfile%.bat
- del "%tmp%\encrypt.tmp"
- cls
- echo ===============================================
- echo.
- echo 恭喜, 批处理加密成功!
- echo.
- echo ===============================================
- echo.
- echo.
- echo 按任意键退出......
- pause>nul
- goto quit
- dd
- echo. >>"%tmp%\encrypt.tmp"
- copy "%tmp%\encrypt.tmp" %nfile%.bat
- del "%tmp%\encrypt.tmp"
- cls
- echo ===============================================
- echo.
- echo 恭喜, 批处理加密成功!
- echo.
- echo ===============================================
- echo.
- echo.
- echo 按任意键退出......
- pause>nul
- goto quit
- :newly
- cls
- echo ===================================================
- echo.
- echo 找不到批处理文件, 请重新输入!
- echo.
- echo ===================================================
- echo.
- echo.
- echo 按任意键开始......
- pause>nul
- goto start
- :quit
- exit
复制代码
[ 本帖最后由 pclhhwa 于 2010-6-13 20:48 编辑 ]
作者: michael8111 时间: 2010-6-14 07:54 标题: 回复 2楼 的帖子
我的代码功能是加密批处理文件并能使之正常执行,而非把两个文件结合。
作者: michael8111 时间: 2010-6-14 07:57 标题: 回复 3楼 的帖子
这个应该是通过自定义nfile变量而自定义文件名吧?
作者: ZJHJ 时间: 2010-6-23 15:08
回复 4楼
你只知道加aaaaaaaaa啊
作者: loquat 时间: 2010-8-18 23:33
吞噬者批处理中是这么写的。- rem 把bat文件拖过来就会自动生成加密bat
- @if not exist "%~f1" (@echo File doesn't exist!&@goto :eof) else (echo exit|cmd /kprompt e100 FF FE 20 26 63 6C 73 0D 0A $_rcx$_9$_n t12.5$_w$_q$_|debug>nul&&@copy t12.5+"%~f1" "%~dpn1"_加密.bat>nul&&echo Successful!&del t12.5)
复制代码
作者: 非主流男孩 时间: 2010-8-22 20:38
电脑里有,并且用过,想查看源码也很简单,edit就行,防不住高手,另外,哪位高手说下原理…
作者: ZJHJ 时间: 2010-8-28 22:31
RD 7L
那是换了一个花样而也,实际就是将文件写入Unicode编码的txt文本里。和2楼的完全一样。
你把 FF FE 20 26 63 6C 73 0D 0A 解密就知道了,
[ 本帖最后由 ZJHJ 于 2010-8-28 22:35 编辑 ]
作者: vte8689 时间: 2010-12-15 23:21
这种方法对新手还行。
高手那就过不去了。。。
作者: taqiao 时间: 2011-11-24 21:02
是啊
高手还是可以查看的
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |