中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 03:48
48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [原创][讨论]非编译型批处理加密方案与代码
可打印版本  113,591 / 364
第1楼 biobio 发表于 2006-07-10 10:52
初级用户 发帖 44 积分 162
[原创][讨论]非编译型批处理加密方案与代码
.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 ]
第2楼 electronixtar 发表于 2006-07-10 11:27
铂金会员 发帖 2,672 积分 7,493
我早就知道这个帖子会火的,所以占了个沙发,哈哈

[ Last edited by electronixtar on 2007-5-8 at 08:36 PM ]
第3楼 kcdsw 发表于 2006-07-10 17:34
中级用户 发帖 179 积分 404
QuickBFC.EXE

搜索一下 这个程序等于是把bat文件嵌入进去了 所以只要环境对就能正确执行
第4楼 zhaxi 发表于 2006-07-10 19:19
初级用户 发帖 40 积分 112
这个QuickBFC.EXE只能打包1个bat为exe,没什么用。

有没有把一组bat文件打包为exe的。因为经常会有很多bat组成一个程序啊。
第5楼 kcdsw 发表于 2006-07-10 19:22
中级用户 发帖 179 积分 404
那你去找个有用的吧 干脆你给大伙写个不正好嘛
说这等屁话
第6楼 asbai 发表于 2006-07-11 21:04
高级用户 发帖 252 积分 653
Originally posted by kcdsw at 2006-7-10 19:22:
那你去找个有用的吧 干脆你给大伙写个不正好嘛
说这等屁话


hoho,不至于吧?火气咋这么大?
第7楼 yuanyong630 发表于 2006-07-13 11:28
初级用户 发帖 13 积分 49
BAT文件加密法 (比Bat2Com那个软件好使<因为那个软件不支
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
第8楼 flying008 发表于 2006-07-13 11:44
中级用户 发帖 103 积分 245
有效……支持……感谢 ……! 绝对的智慧和技术的结晶!
那请问楼上的,怎么重新显示内容呢?有盾必有矛吧?
第9楼 wang6610 发表于 2006-07-13 12:47
银牌会员 发帖 488 积分 1,246
7 楼测试过了能行。
第10楼 bagpipe 发表于 2006-07-13 12:57
银牌会员 发帖 425 积分 1,144 来自 北京
大家火气都别太大了,4楼zhaxi,用多个批处理能够完成的任务也可以写成一个批处理的,只不过代码量的问题不一样罢了..........
第11楼 3742668 发表于 2006-07-13 15:41
荣誉版主 发帖 718 积分 2,013

『第 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% - 扩展到调用命令处理器的原始命令行。

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

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

或者自己定义变量:

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

对付新手,上面的方法已经会让他眼花缭乱了。不过,这也仅仅只是个开头,还有插入迷惑人的垃圾代码,变量高级加密,运行一次后代码自动改变等等方法,好戏还在后头呢。
(待续)
第12楼 buddiyar 发表于 2006-07-15 01:06
初级用户 发帖 75 积分 160
真的有效么

那么又是为什么呢?

达人们解释一下先
第13楼 flying008 发表于 2006-07-21 14:24
中级用户 发帖 103 积分 245
奇怪了,现在粘贴代码又不能隐藏BAT内容了,真是怪了,前几天还可以的,
第14楼 雨露 发表于 2006-07-21 15:32
管理员 发帖 2,601 积分 6,215
7楼的方法好像没有一点用!
第15楼 namejm 发表于 2006-07-21 15:48
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  3742668版主的加密用到了字符的截取和字符的置换,呵呵,得把密码学的常用方法学到手才行,不过这样写代码要自己手握一份字符置换表,有点累人啊。
1 2 3 425  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023