Total Pageviews

Thursday 11 January 2018

BAT脚本加密方式浅析

大家知道, vbs脚本是容易被加密的。一些看上去完全不知道在描述什么的vbs脚本是可以成功运行的。然而,同样作为windows系统中的脚本程序,bat批处理脚本程序是无法用简单的方法加密的,也就是说批处理程序的代码几乎都是公开的。尽管批处理程序本身就是为了简介和方便地处理操作系统和应用程序而存在的,脚本加密后有违批处理脚本的存在初衷,但是我们还是可以来探讨一下批处理程序的简单加密方式。我能想到的bat脚本加密方式有如下三种,而且都有一定缺陷,欢迎大家补充。

第一种,利用批处理文件本身来加密。所谓利用文件本身,就是指该文件包含了密文和解密算法,通常可以在文件的最后放一段解密的过程:decrypt,然后在批处理头部用more的方式逐句读入密文并call :decrypt然后输出成解密后的批处理并执行,最后解密后的批处理自删除。这种方法虽然最容易理解,但是缺陷也很明显,首先是执行效率很低,有违批处理程序一贯的高速的特征,还有就是程序编写复杂、繁琐,更重要的是这种加密实际上并非真正的加密,因为包含解密算法的过程是不能加密的(否则这个批处理程序就无法执行了),因此熟悉批处理的人读完全部语句后可以花一定的时间手工将密文解密,当然这个时间长度随加密算法的不同而有所不同,但肯定不会很长。当然,你也可以进行多种算法的重复加密,执行的时候再逐一解密,这样就太繁琐了,而且严重影响了批处理程序的执行效率。

第二种,利用别的加密程序(比如vbs文件)来加密。这种方式较简单,将批处理程序按一定算法加密,然后将解密算法(加密的vbs格式)加密后在批处理头部用echo方式输出到vbs文件里,然后调用这个加密的vbs格式文件来解密批处理文件然后执行,最后删除这个vbs文件和解密后的批处理文件。这种方法的优点在于它是真正的加密,加密程度由输出的vbs文件的加密程度决定。缺点是执行效率比第一种更低,程序编写更加繁琐。而且这两种方式还有一个共有的缺点,如果程序前后处理上有些弱点,别人就可以更改脚本利用一些管道等方式将解密后的脚本输出或回显出来,这就达不到加密的目的了。

第三种,用编译器将批处理文件编译成可执行文件.com或.exe。目前,将批处理文件编译成可执行文件的软件有很多,比如bat2exe, bat2com等,这里推荐一个软件ExeStript(点击下载),该软件可以将常见的bat, cmd, vbs, js, wsf, hta等脚本文件编译成可执行文件。

第四种,直接将bat文件的汇编并由系统自带的debug程序读入来执行,这种方法和第三种的原理基本相同。需要用到的工具(点击这里下载),将需要加密的bat文件拖到这个vbs上就能生成加密后的批处理文件,可以直接执行。需要注意的是,源bat文件结尾需要加上自删除指令,或者在加密后的文件中加入删除指令。这两种加密方法的优点在于加密简单完全,而且执行效率高,缺点在于加密后的批处理文件长度大幅增加,而且可执行程序在64KB以上时会出现一些问题,执行的时候需要分段编译,比较麻烦;同时,每次运行时都要先编译,速度较慢。

网上还有一种加密方法,使用如下的脚本进行加密:(点击下载),这种加密利用了系统在字符显示上的一些错误,在文件头部添加一串“%%%%a”,从而导致显示乱码。这是一种虚假的加密,一旦用notepad++等程序打开,就可以直接看到源代码,因此只能骗骗批处理菜鸟,没法真正派上用场。

就说这么多了。

No comments:

Post a Comment