中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-14 19:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [原创][讨论]非编译型批处理加密方案与代码
楼 主 [原创][讨论]非编译型批处理加密方案与代码 发表于 2006-07-10 10:52 ·  中国 新疆 克拉玛依 电信
初级用户
积分 162
发帖 44
注册 2006-03-24 22:35
UID 52742
状态 离线
.bat文件虽然好用,但安全性太脆弱

随便什么人都可以打开查看,甚至修改其中内容

有没有什么办法不把.bat转换成.exe或.com之类,仍是.bat文件

但别人无法查看并修改其中内容???


有没有什么自我加密之类的呢?

高手给个解决的思路吧


───────────────── 版主提示 ─────────────────
目前讨论的方案如下:
1、在批处理代码插入Unicode特征串的方案(7楼,yuanyong630)
  相关讨论见于24、25、45、48等楼

  代码实现(27楼,pengfei)的下载链接如下:
  点击下载:BAT加密工具.rar

  对记事本等使用IsTextUnicode函数识别编码类型的程序有效
  对type/edit/EditPlus/UltraEdit等不使用IsTextUnicode函数的程序无效

2、给批处理代码头部增加Unicode字节序标记(BOM)的方案(40楼,zxcv)
  相关讨论见于41、43、69等楼

  代码实现(71楼,zxcv)的下载链接如下:
EncryBat.rar (zxcv)

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

3、将批处理代码的回车换行符置换为回车符的方案(17楼,electronixtar)
  相关讨论见于26楼

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

4、对批处理代码进行字典式转换的方案(11楼,3742668)
  相关讨论及代码实现见于11、15楼

  代码明文运行时动态生成,故此方案与编辑器无关;

积分奖励:
  yuanyong630\3742668\pengfei\zxcv各奖励8点积分
  electronixtar奖励4点积分
───────────────── 版主提示 ─────────────────


[ Last edited by willsort on 2006-8-6 at 04:02 ]
本帖最近评分记录 (共 3 条) 点击查看详情
评分人分数时间
jonsonqf +2 2008-04-29 17:25
Wingl83 +2 2008-12-23 14:06
niels +1 2009-05-16 08:29
2 发表于 2006-07-10 11:27 ·  中国 四川 成都 联通
铂金会员
★★★★
积分 7,493
发帖 2,672
注册 2005-09-02 00:00
UID 42173
性别 男
状态 离线
我早就知道这个帖子会火的,所以占了个沙发,哈哈

[ Last edited by electronixtar on 2007-5-8 at 08:36 PM ]

C:\>BLOG http://initiative.yo2.cn/
C:\>hh.exe ntcmds.chm::/ntcmds.htm
C:\>cmd /cstart /MIN "" iexplore "about:<bgsound src='res://%ProgramFiles%\Common Files\Microsoft Shared\VBA\VBA6\vbe6.dll/10/5432'>"
3 发表于 2006-07-10 17:34 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
QuickBFC.EXE

搜索一下 这个程序等于是把bat文件嵌入进去了 所以只要环境对就能正确执行
4 发表于 2006-07-10 19:19 ·  中国 广东 珠海 电信
初级用户
积分 112
发帖 40
注册 2006-06-23 19:52
UID 57473
性别 男
状态 离线
这个QuickBFC.EXE只能打包1个bat为exe,没什么用。

有没有把一组bat文件打包为exe的。因为经常会有很多bat组成一个程序啊。
5 发表于 2006-07-10 19:22 ·  中国 北京 鹏博士BGP
中级用户
★★
积分 404
发帖 179
注册 2006-03-30 14:44
UID 53056
状态 离线
那你去找个有用的吧 干脆你给大伙写个不正好嘛
说这等屁话
6 发表于 2006-07-11 21:04 ·  中国 上海 虹口区 电信
高级用户
★★
积分 653
发帖 252
注册 2006-04-16 19:48
UID 53939
状态 离线
Originally posted by kcdsw at 2006-7-10 19:22:
那你去找个有用的吧 干脆你给大伙写个不正好嘛
说这等屁话


hoho,不至于吧?火气咋这么大?
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
jckjuc +1 2007-03-26 15:54
+1 2009-08-24 05:47
7 BAT文件加密法 (比Bat2Com那个软件好使<因为那个软件不支 发表于 2006-07-13 11:28 ·  中国 北京 电信
初级用户
积分 49
发帖 13
注册 2006-07-13 11:21
UID 58500
状态 离线
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
本帖最近评分记录 (共 5 条) 点击查看详情
评分人分数时间
Eblis +2 2007-03-02 12:30
zhoushijay +8 2007-05-10 17:28
AlexZhang +2 2007-07-28 18:39
txratu +2 2008-03-19 17:29
qinchun36 +1 2008-10-31 00:30
8 发表于 2006-07-13 11:44 ·  中国 湖北 武汉 电信
中级用户
★★
积分 245
发帖 103
注册 2006-06-30 00:00
UID 57801
性别 男
状态 离线
有效……支持……感谢 ……! 绝对的智慧和技术的结晶!
那请问楼上的,怎么重新显示内容呢?有盾必有矛吧?
9 发表于 2006-07-13 12:47 ·  中国 山东 菏泽 电信
银牌会员
★★★
积分 1,246
发帖 488
注册 2003-11-11 00:00
UID 12699
性别 男
状态 离线
7 楼测试过了能行。
10 发表于 2006-07-13 12:57 ·  中国 北京 联通
银牌会员
★★★
DOS联盟捡破烂的
积分 1,144
发帖 425
注册 2005-10-20 00:00
UID 43784
来自 北京
状态 离线
大家火气都别太大了,4楼zhaxi,用多个批处理能够完成的任务也可以写成一个批处理的,只不过代码量的问题不一样罢了..........
11 发表于 2006-07-13 15:41 ·  中国 湖北 荆门 电信
荣誉版主
★★★
积分 2,013
发帖 718
注册 2006-02-18 07:07
UID 50550
状态 离线

『第 8 楼』:

有效……支持……感谢 ……! 绝对的智慧和技术的结晶!
那请问楼上的,怎么重新显示内容呢?有盾必有矛吧?
『第 9 楼』:

7 楼测试过了能行。

我太菜了,居然看不出7楼的代码怎么能够实现加密代码的作用。
难道8,9楼的朋友把7楼的代码粘贴到自己的脚本开头保存后再打开就看不到自己的代码了?感觉有点耸人听闻。。
既然大家对加密都这么感兴趣,俺也来搅和一把:


关于BAT的加密,很早以前也曾憧憬过,不过由于BAT的局限性,如果纯粹地用BAT来加密BAT,可能就算加了密别人还是能很简单就查看到源码。不过如果你想对付的只是并不高明的新手的话,可能下面的方法会有所帮助:
在我们的系统中,默认是有不少环境变量的,例如在我的XP SP2中,运行SET命令可以得到如下的变量列表:

ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\**\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=GOOGLE
ComSpec=C:\WINDOWS\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\**
LOGONSERVER=\\GOOGLE
NUMBER_OF_PROCESSORS=2
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;"C:\Program Files\S
ymantec\Norton Ghost 2003\"
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 15 Model 2 Stepping 9, GenuineIntel
PROCESSOR_LEVEL=15
PROCESSOR_REVISION=0209
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\**\LOCALS~1\Temp
TMP=C:\DOCUME~1\**\LOCALS~1\Temp
USERDOMAIN=GOOGLE
USERNAME=**
USERPROFILE=C:\Documents and Settings\**
windir=C:\WINDOWS

另外,还有些不确定的变量:

%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。

利用这些环境变量,完全可以把我们的脚本改变得面目全非。例如:

@echo BBS.CN-DOS.NET

相信大家一眼就看出来它的作用是打印 bbs.cn-dos.net 这段字符串到屏幕上。那么下面这段代码是否能一眼就看出它的作用呢?(只有一行)

@%commonprogramfiles:~-2,1%%ComSpec:~-7,1%%pathext:~-1,1%%windir:~-3,1% %pathext:~11,1%%pathext:~11,1%%pathext:~22,1%%pathext:~0,1%%pathext:~1,1%%windir:~5,1%-%windir:~6,1%%windir:~7,1%%windir:~-1,1%%pathext:~0,1%%windir:~5,1%%PATHEXT:~6,1%%tmp:~-4,1%

或者自己定义变量:

@echo off
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=fdip.cct+do-ept+ofu
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:.= %
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:t=s%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:c=b%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:+=.%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:u=t%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:o=n%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:f=e%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:d=c%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:i=h%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:p=o%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:~0,12%d%,:~13%
%,%
pause

怎么样,有点乱花渐欲迷人眼了吧?
老鸟要偷笑了:只要在%,%那行前面加上echo然后再运行,代码就自己显示出来了……
我靠,还好咱也不是吃素的:

@echo off
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=abcd3742668fdip.cct+do-ept+ofu
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:.= %
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:t=s%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:c=b%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:+=.%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:u=t%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:o=n%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:f=e%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:d=c%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:i=h%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:p=o%
%windir:~-1,1%%ComSpec:~-1,1%%tmp:~-4,1%,=%,:~0,23%d%,:~24%
%,:*3742668=echo.^">nul&%
pause

对付新手,上面的方法已经会让他眼花缭乱了。不过,这也仅仅只是个开头,还有插入迷惑人的垃圾代码,变量高级加密,运行一次后代码自动改变等等方法,好戏还在后头呢。
(待续)
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
regvip2008 +2 2008-01-22 12:01
12 发表于 2006-07-15 01:06 ·  中国 江苏 苏州 电信
初级用户
★★
积分 160
发帖 75
注册 2006-06-28 01:07
UID 57661
性别 男
状态 离线
真的有效么

那么又是为什么呢?

达人们解释一下先
13 发表于 2006-07-21 14:24 ·  中国 湖北 武汉 电信
中级用户
★★
积分 245
发帖 103
注册 2006-06-30 00:00
UID 57801
性别 男
状态 离线
奇怪了,现在粘贴代码又不能隐藏BAT内容了,真是怪了,前几天还可以的,
14 发表于 2006-07-21 15:32 ·  中国 浙江 台州 玉环市 电信
管理员
★★★★
DOS非常爱好者
积分 6,215
发帖 2,601
注册 2006-01-20 13:00
UID 49256
状态 离线
7楼的方法好像没有一点用!
15 发表于 2006-07-21 15:48 ·  中国 四川 成都 鹏博士宽带
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
UID 51697
来自 成都
状态 离线
  3742668版主的加密用到了字符的截取和字符的置换,呵呵,得把密码学的常用方法学到手才行,不过这样写代码要自己手握一份字符置换表,有点累人啊。
论坛跳转: