BAT加密工具 EncryBat 非编译型bat批处理加密方案与代码

bat文件虽然好用,但安全性太脆弱
随便什么人都可以打开查看,甚至修改其中内容
有没有什么办法不把.bat转换成.exe或.com之类,仍是.bat文件
但别人无法查看并修改其中内容???
有没有什么自我加密之类的呢?
高手给个解决的思路吧
目前讨论的方案如下:
1、在批处理代码插入Unicode特征串的方案
  对记事本等使用IsTextUnicode函数识别编码类型的程序有效
  对type/edit/EditPlus/UltraEdit等不使用IsTextUnicode函数的程序无效

2、给批处理代码头部增加Unicode字节序标记(BOM)的方案
       EncryBat.rar (zxcv)

  对记事本、Word、UltraEdit、type等支持Unicode编码的程序有效
  对edit/WinRAR内部查看器等不支持Unicode编码的程序无效

3、将批处理代码的回车换行符置换为回车符的方案

  对edit等分别识别回车换行符的编辑器有效

4、对批处理代码进行字典式转换的方案
  代码明文运行时动态生成,故此方案与编辑器无关;
BAT文件加密法 (比Bat2Com那个软件好使<因为那个软件不支持中文>)
方法是:
打开“记事本”将文件开头写入以下的语句


代码如下:

for /l %%a in (1,1,10) do ren *.jpg %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a

记事本程序在保存一篇新建的文档时,如果没有指定编码类型,会使用缺省的ANSI类型(对于中文版来说,对应的就是GB码)。

而在打开一篇已创建的文档时,它会分析文档的编码类型,它首先判断文档头部有无BOM(Byte Order Mark,字节序标记,长度为2~3字节),如果有则根据其内容判断编码类型,FF、FE(Unicode),FE、FF(Unicode big endian),EF、BB、BF(UTF-8)[1]。

因为事实上有很多非ANSI编码的文档是没有任何BOM的“纯文本”,所以对这些文档不能简单的判断为ANSI编码。而需要使用一系列的统计学算法根据文档内容来猜测文档编码。记事本使用了 IsTextUnicode 函数来判断是否为 Unicode/Unicode big endian 编码,使用 IsTextUTF8 判断是否为 UTF8 编码。

但既然是统计学算法,就难免存在误判,尤其在文档内容过短时,由于样本的容量太小,这种误判的概率会显著增大。比如那个有名的微软与联通有仇的笑话,就是记事本在打开只有"联通"二字的ANSI编码文档时,IsTextUTF8 函数将其误判为UTF8编码[2];同样的误判也发生在 IsTextUnicode 函数上,比如具有 “this app can break”这种具有4335结构的文档,会被误判为 Unicode 编码[3][4]。

需要说明的是,这种误判的可能性是建立在文本较短且其字节位特征不被干扰的前提上的。如果将上述的文本做稍许修改(即使只是增加一个回车),则误判很难再发生。

而 yuanyong630 兄方案的特殊性在于,它的字节串不但具有Unicode特征,而且很长达到了1288字节,也就是说它的Unicode特征性很强,所以可以抵抗一些较短的不具有Unicode特征串的干扰,这是由统计学的规律所决定的。但是在干扰串稍长时,Unicode的特征将会受到显著干扰,直至被 IsTextUnicode 函数认定为非 Unicode。所以,有些朋友总是无法测试成功,应该是与附加的批处理代码长度和内容相关。大家可以测试一下[5]中的代码。

因为其他的编辑器(比如 Word / Wordpad / EditPlus / UltraEdit)使用了更新的编码类型判断算法,所以在 Unicode 判断上改进了不少,而 UTF8 的判断仍然不尽如人意。但因为理论上来说完全准确地算法并不存在,所以我们只能依靠避免使用无BOM的非ANSI文档,或者打开文档时手动指定编码类型。

另外,如果使用记事本保存了这些误判了编码类型的文件,则将难以恢复。如果使用误判编码保存,则将给原文档加上BOM标记,则使用其他编辑器也再无法观察到原文档。如果使用 ANSI 编码保存,则原文档将会被当作 Unicode 文档而被转换,还原的可能性接近于零。

[1] Unicode简介
http://my.opera.com/neutronstar/blog/index.dml/tag/编码

[2] 微软为什么和联通有仇
http://blog.vckbase.com/localvar/archive/2005/07/12/9510.aspx

[3] Notepad bug? Encoding issue?
http://weblogs.asp.net/cumpsd/archive/2004/02/27/81098.aspx

[4] Bush Hid The Facts
http://www.shoutwire.com/comments/16341/Bush_Hid_The_Facts

[5] cry.cmd
对于将 0d 0a 改为 0a 的方法,不如将之改为 0d 。也即将回车换行改为只回车不换行,则当前行的文本会被没有换行的文本行所覆盖,如此反复覆盖叠加。如果在批处理的最后一行添加一句长度大于以上所有行的注释文本,则最终只会显示这样注释。

这样的方法,对EDIT和TYPE是有效的,所以在DOS时代曾一度流行。不过,这个方案与yuanyong630兄的方案类似,只是针对于特定文本处理器的特定文本处理机制,无法适用于所有平台环境。

至于其他的加密方法,也各有缺陷,想达到软件工程的要求是比较困难的。.
BAT加密工具.rar   EncryBat.rar

时间: 2008-04-12

BAT 解密工具

@echo offmode con: cols=80 lines=25:indexcolor 27clsecho                    ╭──────────── ──╮echo                    │                             │echo    ╭─────────┤      BAT 解 密 工 具    ├─────────╮echo    │              │                           

批处理加密.bat

复制代码 代码如下: %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a %%a

运行bat时隐藏cmd窗口的方法(bat隐藏窗口 隐藏运行bat文件)

这里我们简单的整理下常用方法,方便大家使用.都是通过vbscript的代码.运行bat时隐藏cmd窗口的方法 可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序. 复制代码 代码如下: Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c 批处理程序名",vbhide 将上面代码拷贝到记事本中,保存为"runbat.vbs"或者其它的名字(扩展名必须是.vbs),然后点击运行生成的脚本ru

批处理bat命令 获取当前盘符和当前目录和上级目录的代码

批处理命令获取当前盘符和当前目录 当前盘符:%~d0 当前路径:%cd% 当前执行命令行:%0 当前bat文件路径:%~dp0 当前bat文件短路径:%~sdp0 测试 echo 当前盘符:%~d0 echo 当前路径:%cd% echo 当前执行命令行:%0 echo 当前bat文件路径:%~dp0 echo 当前bat文件短路径:%~sdp0 效果如下图所示 可以用echo %cd%进行打印测试 windows 的快捷方式不能使用相对路径.可以用批处理文件获取相对路径. set pa=%cd

Java编程中的检查型异常与非检查型异常分析

对于因为编程错误而导致的异常,或者是不能期望程序捕获的异常(解除引用一个空指针,数组越界,除零,等等),为了使开发人员免于处理这些异常,一些异常被命名为非检查型异常(即那些继承自 RuntimeException 的异常)并且不需要进行声明. Checked Exception和Unchecked Exception的几点不同之处         方法签名是否需要声明exception,调用该方法时是否需要捕获exception,exception产生的时候JVM控制程序的状态. Sun 的"T

Android AES加密工具类分享

1.AES加密工具类 java不支持PKCS7Padding,只支持PKCS5Padding.我们知道加密算法由算法+模式+填充组成,下一篇介绍iOS和Android通用的AES加密,本篇文章使用PKCS5Padding加密方式. package com.example.aesdemo; import java.io.UnsupportedEncodingException; import javax.crypto.Cipher; import javax.crypto.spec.SecretK

VBS加密14法你会几种 VBS加密免杀浅谈

手机打字实在在麻烦,所以一些比较简单或太复杂的代码我就不直接提供实例了. 1.不是方法的方法--加注释 加一些规则无用不含特征码的注释.代码略 2.大小写混编 利用VBS忽略大小写 3. 分行与同行混用 利用冒号(:)连接多行代码为一行 4.一行分多行 使用续行符(_)将一行分多行写 5.利用execute函数 复制代码 代码如下: Execute("createobject("&chr(34)&"wscript.shell"&chr(34)

pack.wsf wsh下的js加密工具新浪也在用

pack.wsf 复制代码 代码如下: <job> <!-- Windows Scripting Host command line wrapper for Pack.js  --> <!-- Run as CScript //nologo infile > outfile                 --> <script type="text/javascript"> function ICommon(that){if(th

推荐一个javascript的加密工具

一个加密JAVASCRIPT的开源工具PACKER2.0.2 这是一个并非很复杂的编码工具,编码过后可以被浏览器直接识别.新浪在用.比如:http://comment4.news.sina.com.cn/comment/cmnt_xml.js 从这里进入http://dean.edwards.name/packer/,很简单的一个界面. 设置也很简单Numeric (Base 10) :所有的字符都被编码成数字Normal (Base 62) :所有的字符都被编码成字母与数字符号构成的值.这是推