网上许多人写了批处理之后喜欢加密以免别人修改版权,用的最多的就是编译成EXE文件.
而有个比较特别的加密办法是给要加密的批处理文件加上FFEF文件头,让记事本一类的文本编辑器以UNICODE方式打开批处理文件,当然会显示乱码,但Windows本身并不认为这个文件是UNICODE格式文件,依然依次执行文件中的每条命令,批处理文件让然能够正常使用。
接下来分析一下,用UltralEdit32的打开加了密的批处理,切换到十六进制模式显示如下代码:
00000000h: FF FE 0D 0A 63 6C 73 0D 0A FF FE 0D 0A 63 6C 73 ; ??.cls..??.cls
00000010h: 0D 0A ; ..
显然,如果强行在要被加密的批处理文件头增加UNICODE文件头FFFE,肯定会造成被加密批处理文件的第一条命令执行错误,而作者,在FFFE后面加了一个0D0A,这是个回车换行,这样就不会影响被加密文件第一条命令的执行,但是会在屏幕上出现 “不是内部或外部命令,也不是可运行的程序或批处理文件” 的错误信息,作者又在这条命令后面增加了一个 cls(回车),立刻清除屏幕上的错误信息,可谓巧妙。
写到这里,至于破解大家也应该都能看出来了,方法很简单只要用十六进制编辑器将被加密文件的文件头 FF FE 0D 0A 63 6C 73 0D 0A 删除掉即可。如果怕麻烦,只要把前面的FFFE删掉,然后用记事本重新修改一下即可。
这种方法虽然很容易破解,但是很新颖,作者的想法非常好。