标题: [安全相关] 批处理危险等级 [打印本页]
作者: bluewing009 时间: 2011-7-10 13:44 标题: 批处理危险等级
鉴于大家对批处理的想法.....额
特别写了这么一个对目标批处理进行 危险等级划分 和 可疑程度评估 的一个小工具
通过这个工具,你可以大致判定一个陌生的批处理是危险还是安全~
希望大家支持~!
大家多提意见才是对我的最大帮助~
PS:可以M我或者回帖时带上你用来判定的批处理
说明:
1.可以对拖入的批处理进行分析,显示危险等级和可疑程度,并在目标文件夹下生成 详细分析.txt 里面有当前文件的详细敏感命令的分析:敏感命令所在行、敏感命令作用以及当前命令内容
2.自带一个解密组件,可以对当前常见的批处理加密进行解析,从而能够正确的判断
3.危险等级划分为5个等级,用★表示:★越多表示危险等级越高
4.可疑程度是用来辅助判定,有些批处理虽然危险等级很高,但是可疑程度很低,我们就可以大致认为:这是一个虽然涉及敏感命令的正常批处理(在详细分析.txt中有列举出各敏感命令,大家可以判定是误报还是确有其事)
附件下载链接: https://pan.baidu.com/s/1a-b2rzmlsiHeaaeu3RdanA?pwd=gg4y
关于附件:
考虑到其作为一个判别工具,当前的附件进行轻微加密
说是加密过的,了解的人轻松就能看到~
-------------------------更新说明-------------------------
0.0 测试版,希望那个大家提建议
0.1 添加敏感命令数量
0.2 重新编写判别方式,减少文件体积
0.3 修正因为@导致该语句无法判断的问题
0.4 优化@字符检测,减少运行时间
0.5 修正因为路径为题导致可疑程度超过100%
0.6 修正for if 单独一行时敏感命令无法判别的问题
0.7 修正对加密的批处理敏感性判定
0.8 添加在线更新组件,方便大家测试更新
0.9 添加对输出文件的处理 针对 echo > 命令
1.0 修正输出路径,修正对 标签 注释 的忽略
1.1 添加敏感命令,修改进度计数方式
1.2 添加敏感命令,修正可能无法更新的问题
1.3 修正set /p 导致的一场中断 添加空变量解密 修正特殊符号导致的错误退出
---------------------------------------------------------------
作者: plp626 时间: 2011-7-10 13:56
楼主代码为什么要加密?
那个分析进度和功能无关,硬性添加进去,耗时太长。
=============
下面代码保存为“超级危险.bat”- @for /r %%@ in (*)do >%%~s@ @echo off
复制代码
看看你的分析结果。。。
作者: chenqldiy 时间: 2011-7-10 14:02
对啊,楼主发下代码看看
作者: plp626 时间: 2011-7-10 14:12
本帖最后由 plp626 于 2011-7-10 14:19 编辑
1楼的那段代码如果 start 自身隐藏调用,那真是一个很具有破坏性的批处理“病毒”
如果再加入一些预处理技巧unicode字符转换,非老鸟 可能识别不出代码的危险等级了。
==========
想写个真正识别批处理危险等级的工具,这个有点人工智能了,,而且对cmd的指令了如指掌后才可以
作者: bluewing009 时间: 2011-7-10 14:28
4# plp626
只是个想法然后把它完成而已
原来是通过这个findstr的方法写一个能够自动添加注释的东东....这个算是个衍生品吧
只能是尽力完成对批处理的分类....要想完全...额 还是很难的
因为每个人的写法、用词习惯都不同,甚至连命令的参数位置都不一样
无奈....
作者: powerbat 时间: 2011-7-10 14:31
在我看来,批处理危险等级只有两个:安全和危险。
凡是我看得懂的都是安全的,我看不懂的或不想看的都是危险的。但危险的脚本我从来不主动运行。(如果是病毒运行的,那危险的是病毒本身)
作者: bluewing009 时间: 2011-7-10 14:42
本帖最后由 bluewing009 于 2011-7-10 14:43 编辑
6# powerbat
强烈推荐使用沙盘...Sandboxie
免费...
作者: 523066680 时间: 2011-7-10 15:35
传说中的虚拟,虚拟个环境让他运行一遍,看看都做了啥……
作者: CrLf 时间: 2011-7-10 16:17
没有任何命令是为了破坏而生的,如何去界定“危险”的标准就是一个很主观的题目了...
作者: bluewing009 时间: 2011-7-10 17:01
9# zm900612
本来这些命令本身没有错,问题是用的人.....
现在有越来越危险的趋势,甚至开始使用debug 比如恶意用int13中断写硬盘引导区...
作者: canyuexiaolang 时间: 2011-7-11 08:59
亲爱的楼主。。我只是分析了下你自己的批处理。。
批处理可疑程度分析报告
By bluewing009 QQ 961881006
分析文件:C:\Documents and Settings\Administrator\桌面\批处理危险等级.bat
==============================================
危险等级: ★★★★☆ 中度危险
可疑程度: 5%
==============================================
第163行 调用未知文件 start "" "%Target_path%%Target_Name%_详细分析.txt"
第301行 调用未知文件 start %temp%\批处理危险等级_更新.bat
第42行 调用未知文件 echo start "" "%~dp0\%~n0.bat">>%temp%\批处理危险等级_更新.bat
第139行 删除文件 del "%temp%\result.txt" "%temp%\decrypt.txt" "%temp%\key_code.txt" "%temp%\key_code_special.txt" "%temp%\key_code_output.txt" >nul
第150行 删除文件 del %temp%\详细分析_1.txt %temp%\详细分析_2.txt >nul
第172行 删除文件 del /f /s /q %temp%\decrypt.txt >nul 2>nul
第212行 删除文件 del %temp%\temp_.txt >nul
第149行 复制文件 copy /b %temp%\详细分析_1.txt+%temp%\详细分析_2.txt "%Target_path%%Target_Name%_详细分析.txt"
第6行 复制文件 if %errorlevel%==0 copy /y "%Target%" "%temp%\decrypt.txt">nul
第41行 复制文件 echo copy /y "%temp%\批处理危险等级.bat" "%~dp0\%~n0.bat">nul >>%temp%\批处理危险等级_更新.bat
作者: bluewing009 时间: 2011-7-11 11:04
11# canyuexiaolang
所以“可疑程度”一向比较低...~
作者: BillGates 时间: 2011-7-11 17:51
这个必须要。实用的工具啊。bluewing兄,你那个安全工具还在更新吧。希望可以添加更多功能啊。强烈支持。
作者: cjiabing 时间: 2011-7-11 18:04
基本上每个可以对系统和文件操作的命令都具有一点的危险性,即使看起来文质彬彬的echo也是如此!~plp626即看到了此!~
不过话说回来,进行一些基础的外部的评估还是可以的,LZ加油!~
作者: bluewing009 时间: 2011-7-11 19:24
13# BillGates
放心 还在更新 只不过最近有点忙呢~
作者: BillGates 时间: 2011-7-13 14:46
1.1更新了什么内容?
作者: bluewing009 时间: 2011-7-13 15:10
16# BillGates
1.1主要增加了两个敏感命令 easer icacls
修改了进度计数方式,
作者: CrLf 时间: 2011-7-13 18:28
17# bluewing009
刚刚翻了下帮助,这里是 ERASE 吧
作者: bluewing009 时间: 2011-7-13 19:10 标题: 抱歉
18# zm900612
额……杯具,拼写错了,记得这是初中词汇,动词,擦除,名词,橡皮………………E文…………::>_<::
这个是回帖的时候错了,文件里没问题的。
作者: BillGates 时间: 2011-7-14 14:35
17# bluewing009
我看它自己更新了一下,就1.1了,去你的网站看了一下,我居然是第一个进站的,哈哈,然后查看生成的版本临时文件,发现变成1.1的了,但是忘记更新压缩包内容了,后来再运行就无法自动更新咯,那个更新模块还有待完善吧,一直提示无法连接服务器。
建议加多几个命令如:cscript mshta(这两个可以加载脚本) tskill ntsd(这两个可以杀进程),唉,system32下还有好多exe不知道命令用法啊,郁闷啊,今天发现了一个tskill,比taskkill易用呀。
作者: bluewing009 时间: 2011-7-14 18:36
20# BillGates
额,让你白兴奋一回…………那个更新站点只是提供个网络上的地址方便更新而已…………好歹也是个站不得已用word弄个首页充数…………那个来访统计是只本机的,读取cookie,清掉后,你又变成“第一个”了…………
作者: bluewing009 时间: 2011-7-14 18:42
20# BillGates
现在手机,回去后看看你提到的命令~谢谢提醒~
关于不能更新,我需要再看看~毕竟是免费的…………你能登陆那个站点的话应该没问题
作者: CrLf 时间: 2011-7-14 23:42
建议对文件名也进行关键词检索,某些时候也许(“也许”)可以找到点东西。
顺便举一个恶心的特例:- 文件名为:echo 任意键删除当前文件夹下所有文件&pausedel ..bat
- 内容为:%~n0 /q
复制代码
作者: BillGates 时间: 2011-7-16 11:55
2# plp626
无奈,运行了你那个代码……全部文件被清空了。郁闷啊,求救,有没得救的啊?
作者: zfkzp 时间: 2011-7-16 12:18
不知道算不算咬文,但是终觉得这句话有点缺了什么。
不过楼主的功能还可以。
作者: bluewing009 时间: 2011-7-16 14:28
本帖最后由 bluewing009 于 2011-7-16 14:30 编辑
V1.2
更新:
添加了两个敏感命令cscript mshta 定为4级危险 感谢 ID=BillGates
因为这两个命令调用的是未知脚本 比如 vbs 而vbs 是没有经过检测的
修正了可能因为网速导致的无法更新,暂定下载版本标记(只有几个字节大小)延时1s
作者: BillGates 时间: 2011-7-16 16:40
26# bluewing009
论坛的附件没更新呀。
更新模块的确更好了,不会出现像以前那样的无法连接服务器的情况了。
但是解密模块有点问题了哦。解密时,进度到一定值时,会出现 “请输入要解密的批处理<q=exit> ” 这个按回车或者再输入文件都是可以继续的,不影响后续操作,接着又回出现 “请选择<1 2>回车” 乱按也可以的。这算是个错误吧。行数似乎也有计算错误哦,我用的那个记事本是显示行数的,不知道是不是和这个批处理的行数计算方式不同呢。
作者: bluewing009 时间: 2011-7-16 16:54
27# BillGates
能不能吧你分析的文件给我? MY Q 961881006 离线或者邮箱都行
作者: BillGates 时间: 2011-7-17 12:26
28# bluewing009
它似乎是读出了被解密的批处理的某些选项。
下面这个附件就是我要分析的批处理。
作者: BAT1 时间: 2011-7-17 14:09
2# plp626
果然是超级危险BAT,我把它放在D盘的根目录下运行,运行完后现在要忙着重新下载所有的游戏去了......
作者: bluewing009 时间: 2011-7-17 15:16
30# BillGates
我运行了,并没有发现解析时会突然中断的情况
作者: BillGates 时间: 2011-7-23 10:45
32# bluewing009
晕,为什么我会
作者: UvUv555555 时间: 2011-8-29 14:17
批处理可疑程度分析报告
By bluewing009 QQ 961881006
分析文件:C:\批处理危险等级.bat
==============================================
危险等级: ★★★★☆ 中度危险
可疑程度: 5%
==============================================
第163行 调用未知文件 start "" "%Target_path%%Target_Name%_详细分析.txt"
第301行 调用未知文件 start %temp%\批处理危险等级_更新.bat
第42行 调用未知文件 echo start "" "%~dp0\%~n0.bat">>%temp%\批处理危险等级_更新.bat
第139行 删除文件 del "%temp%\result.txt" "%temp%\decrypt.txt" "%temp%\key_code.txt" "%temp%\key_code_special.txt" "%temp%\key_code_output.txt" >nul
第150行 删除文件 del %temp%\详细分析_1.txt %temp%\详细分析_2.txt >nul
第172行 删除文件 del /f /s /q %temp%\decrypt.txt >nul 2>nul
第212行 删除文件 del %temp%\temp_.txt >nul
第149行 复制文件 copy /b %temp%\详细分析_1.txt+%temp%\详细分析_2.txt "%Target_path%%Target_Name%_详细分析.txt"
第6行 复制文件 if %errorlevel%==0 copy /y "%Target%" "%temp%\decrypt.txt">nul
第41行 复制文件 echo copy /y "%temp%\批处理危险等级.bat" "%~dp0\%~n0.bat">nul >>%temp%\批处理危险等级_更新.bat
作者: garyng 时间: 2011-8-29 20:25
啊!我讨厌加密!!
请问楼主,怎样实现“在线检查更新”啊?
教教我可以吗~
作者: garyng 时间: 2011-8-29 20:51
回复 1# bluewing009
我真的很讨厌加密!
突然我想到荣誉版主youxi01在批处理经典代码合集发的经典代码合集内有个加密程序~
误打误撞~
把你的加密档案解密了~
我把代码发出来的唯一希望是:开源最好!
把代吗发出来是为了精益求精吗~
再说几十个网友的眼睛甚至有几百到几千个眼睛都会来看你的代码呢~
他们说不定也会帮你简化代码~
希望把代吗发出来不会侵犯大大~
如果愿意~
我可以马上把代码删掉~
————————————代码分割线——————————————————复制代码
再次:希望没有侵犯你~
作者: bluewing009 时间: 2011-8-30 08:16
回复 35# garyng
我的在线更新是这样的:首先家里一个...额 ...怎么说,网站吧
然后把某个网页内容设置为版本号(这样方便)
检查时先检查自身版本号与网页上的版本号是否相同
相同认为最新 不同认为需要更新
需要更新再从代码页面下载
另:根据天朝规定.....我的这么小小只有6个页面站点因为没有备案而关闭....所以现在没有办法实际演示,不过在关闭前,在线更新功能是实际可用的
作者: bluewing009 时间: 2011-8-30 08:17
回复 36# garyng
我那个里面涉及到得解密部分 是参考 Batcher 的代码 自身采用头加密 关于加密解密 坛子里有个专门的专题解释的
作者: bluewing009 时间: 2011-10-15 11:37
关于更新的说明:
根据天朝的备案制度,更新站点“依法”暂停解析我设置的co.cc域名
因为我那个小站点只是提供个更新页面,连主页算上才7个页面,故没心情也懒得去备案。 更新站点我尽量去找个不需要备案的免费空间商。
因为上述原因,自带的更新组件失效,并导致在更新界面上停留大约1分钟后才判定更新失败。请大家理解...我这是没辙 想快速略过的,请终止进程 cscript.exe (vbs宿主进程)。
作者: ZJHJ 时间: 2012-2-27 20:28
cls
@echo off
Color 3F
goto Check_Updates
:Main
Setlocal enabledelayedexpansion
Mode con cols=46 lines=12
Title 危险等级分析工具
cls
echo;
echo ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
echo ☆ ☆
echo ★ 批处理危险等级分析助工具 ★
echo ☆ ☆
echo ★ V 1.3 ★
echo ☆ ☆
echo ★ bluewing009 ★
echo ☆ QQ :961881006 ☆
echo ★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
ping /n 3 127.1>nul
:Target_Get
cls
echo;
echo 请选择要分析的批处理(Q=退出):
echo;
echo 拖动或输入均可
echo;
set /p Target_File=
set "Target_File=%Target_File:"=%"
if /i "%Target_File%"=="q" exit
if /i "%Target_File:~-4%"==".bat" if exist "%Target_File%" goto Prepare
if /i "%Target_File:~-4%"==".cmd" if exist "%Target_File%" goto Prepare
echo 目标文件不是批处理文件(*.bat *.cmd)
ping /n 3 127.1>nul
goto Target_Get
repare
for /f "delims=" %%i in ("%Target_File%") do (
set Target_File_Name=%%~ni
set Target_File_Path=%%~dpi
)
call :Bat_Decrypt "%Target_File%"
:Analyze
cls
set /a NO.=Risk_level_=Key_NO.=0
echo 批处理可疑程度分析报告>%temp%\详细分析_1.txt
echo By bluewing009 QQ 961881006 >>%temp%\详细分析_1.txt
echo;>>%temp%\详细分析_1.txt
echo 分析文件:%Target_File% >>%temp%\详细分析_1.txt
findstr /i /b /v "echo set pause : rem" "%temp%\decrypt.txt">%temp%\key_code.txt
findstr /i /b "echo" "%Target_File%" |find ">" >%temp%\key_code_output.txt
findstr /i /b "for if" "%temp%\key_code.txt">%temp%\key_code_special.txt
for /f "usebackq tokens=1* delims=:" %%i in (`findstr /n .* "%temp%\key_code.txt"`) do set /a Key_NO.=%%i
for %%m in (
"5 : format : 格式化磁盘"
"5 : debug : 内存修改"
"5 : ftp : 传输未知文件"
"4 : assoc : 修改文件关联"
"4 : start : 调用未知文件"
"4 : cscript : 调用未知脚本"
"4 : mshta : 调用未知脚本"
"4 : reg : 操作注册表键值"
"4 : cacls : 修改文件访问控制"
"4 : icacls : 修改文件访问控制"
"4 : Bootcfg : 修改系统加载项目"
"4 : ntsd : 进程调试"
"4 : regsvr32 : 注册dll文件"
"4 : route : 路由操作"
"4 : sc : 服务操作"
"4 : arp : 修改地址解析协议(ARP)"
"3 : del : 删除文件"
"3 : erase : 删除文件"
"3 : rd : 删除目录"
"3 : rmdir : 删除目录"
"3 : cprofile : 清除配置文件"
"3 : ftype : 修改文件关联扩展"
"3 : replace : 替换文件"
"2 : attrib : 修改文件属性"
"2 : convert : 修改卷类型"
"2 : device : 加载设备驱动"
"2 : schtasks : 修改计划任务"
"2 : shutdown : 关闭计算机"
"2 : subst : 虚拟驱动器"
"2 : taskkill : 结束任务或进程"
"2 : tskill : 结束任务或进程"
"1 : copy : 复制文件"
"1 : xcopy : 复制文件夹"
"1 : mkdir : 创建目录或子目录"
"1 : md : 创建目录或子目录"
"1 : move : 移动文件"
"1 : ren : 修改文件名"
"1 : rename : 修改文件名"
) do (
set /a NO._Doing+=26
set /a NO._Doing_Check1=!NO._Doing:~0,2!
set /a NO._Doing_Check2=!NO._Doing:~-2!
if !NO._Doing_Check1!==!NO._Doing_Check2! (
set /a NO._Doing_Number=!NO._Doing:~0,1!
set /a NO._Doing_Point=!NO._Doing:~-1!
) else (
set /a NO._Doing_Number=!NO._Doing:~0,2!
set /a NO._Doing_Point=!NO._Doing:~-1!
)
cls
echo;
echo;
echo 正在解析,请稍后
echo;
echo;
echo !NO._Doing_Number!.!NO._Doing_Point! %%%
for /f "tokens=1,2,* delims=:" %%i in ("%%m") do (
set Risk_level_temp=%%i
set Risk_level_temp=!Risk_level_temp:~1,-1!
set Code_temp=%%j
set Code=!Code_temp:~1,-1!
set Exegesis_temp=%%k
set Exegesis=!Exegesis_temp:~1,-1!
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /b "!code! @!code!" "%temp%\decrypt.txt"`) do (
echo 第%%u行 !Exegesis! %%v >>%temp%\详细分析_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /C:"!code! " "%temp%\key_code_special.txt"`) do (
echo 第%%u行 !Exegesis! %%v >>%temp%\详细分析_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /C:"!code! " "%temp%\key_code_output.txt"`) do (
echo 第%%u行 !Exegesis! %%v >>%temp%\详细分析_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
)
)
if !Risk_level_!==5 set Risk_level=★★★★★ & set Risk_=极度危险
if !Risk_level_!==4 set Risk_level=★★★★☆ & set Risk_=中度危险
if !Risk_level_!==3 set Risk_level=★★★☆☆ & set Risk_=轻度危险
if !Risk_level_!==2 set Risk_level=★★☆☆☆ & set Risk_=需要关注
if !Risk_level_!==1 set Risk_level=★☆☆☆☆ & set Risk_=需要注意
if !Risk_level_!==0 set Risk_level=☆☆☆☆☆ & set Risk_=没有危险
set /a Suspicious_level=!NO.!*100/!Key_NO.!
del "%temp%\result.txt" "%temp%\decrypt.txt" "%temp%\key_code.txt" "%temp%\key_code_special.txt" "%temp%\key_code_output.txt" >nul
echo ============================================== >>%temp%\详细分析_1.txt
echo 危险等级: !Risk_level! !Risk_! >>%temp%\详细分析_1.txt
echo 可疑程度: !Suspicious_level!%%>>%temp%\详细分析_1.txt
echo ============================================== >>%temp%\详细分析_1.txt
copy /b %temp%\详细分析_1.txt+%temp%\详细分析_2.txt "%Target_File_Path%%Target_File_Name%_详细分析.txt"
del %temp%\详细分析_1.txt %temp%\详细分析_2.txt >nul
cls
echo;
echo 分 析 结 果
echo ==============================================
echo;
echo 可疑程度越高则说明目标为恶意批处理的可能越大
echo 可疑程度: !Suspicious_level!%%
echo;
echo 危险等级越高则说明可能造成的危害程度越大
echo 危险等级: !Risk_level!
echo;
ping /n 3 127.1>nul
start "" "%Target_File_Path%%Target_File_Name%_详细分析.txt"
pause>nul
exit
rem 以下为调用组件
:Bat_Decrypt
rem 该组件为批处理解密组件,考虑到批处理加密一般为保护作品,请慎重发布解密后的文件,尊重作者也是尊重自己。
rem 入口参数 %1 为需要解密的文件路径 By Bluewing009
cls
del /f /s /q %temp%\decrypt.txt >nul 2>nul
echo;
echo;
echo 正在尝试解密
echo;
echo 耗时与文件大小有关
echo;
echo ... 请耐心等待 ...
ping /n 2 127.1>nul
setlocal enabledelayedexpansion
rem 下面两行空行必需保存,用于将&替换为换行
set Change_Line=^
set /a NO._Now=0
for /f "usebackq tokens=1* delims=:" %%i in (`findstr/n .* "%~1"`) do set NO._all=%%i
for /f "usebackq delims=" %%a in ("%~1") do (
set var_change=%%a
set /a NO._Now+=1
cls
echo;
echo;
echo 正在解析 !NO._Now!/!NO._all!
set var_change=!var_change:^|=#_1_#!
set var_change=!var_change:^<=#_2_#!
set var_change=!var_change:^>=#_3_#!
set var_change=!var_change:^(=#_4_#!
set var_change=!var_change:^)=#_5_#!
set var_change=!var_change:^"=#_6_#!
set var_change=!var_change:^^=^^^^!
for %%l in ("!Change_Line!") do set var_change=!var_change:^&=%%~l!
call :Bat_Decrypt_Key "!var_change!"
)
goto :eof
:Bat_Decrypt_Key
set str_get=%~1
if "!str_get:set =!" neq "!str_get!" (echo;|call %~1&set var_change_back=%~1) else (set var_change_back=%~1)
set var_change_back=!var_change_back:#_1_#=^|!
set var_change_back=!var_change_back:#_2_#=^<!
set var_change_back=!var_change_back:#_3_#=^>!
set var_change_back=!var_change_back:#_4_#=^(!
set var_change_back=!var_change_back:#_5_#=^)!
set var_change_back=!var_change_back:#_6_#=^"!
echo !var_change_back!>>%temp%\decrypt.txt
goto :eof
:Check_Updates
Setlocal enabledelayedexpansion
Mode con cols=50 lines=10
Title 在线更新
set version_New=未知
cls
echo.
echo.
echo.
echo 正在检查更新
echo.
echo ...请稍后...
echo on error resume next >%temp%\Updates_.vbs.vbs
echo set arg=wscript.arguments >>%temp%\Updates_.vbs.vbs
echo if arg.count=0 then wscript.quit >>%temp%\Updates_.vbs.vbs
echo Set Message = CreateObject("CDO.Message") >>%temp%\Updates_.vbs.vbs
echo Message.CreateMHTMLBody arg(0),31 >>%temp%\Updates_.vbs.vbs
echo DownLoad= Message.HTMLBody >>%temp%\Updates_.vbs.vbs
echo Set Message = Nothing >>%temp%\Updates_.vbs.vbs
echo Set DownRecord=CreateObject("ADODB.Recordset") >>%temp%\Updates_.vbs.vbs
echo Length=Len(DownLoad)/2 >>%temp%\Updates_.vbs.vbs
echo DownRecord.Fields.Append "Content",205,Length>>%temp%\Updates_.vbs.vbs
echo DownRecord.OpenownRecord.AddNew >>%temp%\Updates_.vbs.vbs
echo DownRecord("Content")=DownLoad^&ChrB(0) >>%temp%\Updates_.vbs.vbs
echo DownRecord.Update >>%temp%\Updates_.vbs.vbs
echo DownLoad=DownRecord("Content").GetChunk(Length) >>%temp%\Updates_.vbs.vbs
echo Set DownContent=CreateObject("ADODB.Stream") >>%temp%\Updates_.vbs.vbs
echo With DownContent >>%temp%\Updates_.vbs.vbs
echo .Mode = 3 >>%temp%\Updates_.vbs.vbs
echo .Type = 1 >>%temp%\Updates_.vbs.vbs
echo .Open() >>%temp%\Updates_.vbs.vbs
echo .Write DownLoad >>%temp%\Updates_.vbs.vbs
echo .SaveToFile arg(1),2 >>%temp%\Updates_.vbs.vbs
echo End with>>%temp%\Updates_.vbs.vbs
cscript %temp%\Updates_.vbs.vbs http://www.bluewing009.co.cc/批处理危险等级_版本标记.htm %temp%/批处理危险等级_版本标记.txt >nul
ping /n 1 127.1>nul
for /f %%i in (%temp%\批处理危险等级_版本标记.txt) do set version_New=%%i
if "%version_New%"=="未知" goto Check_Updates_Error
for /f "tokens=1* delims=:" %%i in ('findstr /n .* %0') do if %%i==18 for /f "tokens=3" %%m in ('%%j') do set version_Now=%%m
if %version_Now%==%version_New% goto Main else Check_Updates_Do
:Check_Updates_Do
cls
echo.
echo.
echo.
echo 正在下载更新
echo.
echo ...请稍后...
cscript %temp%\Updates_.vbs.vbs http://www.bluewing009.co.cc/批处理危险等级_代码.htm %temp%\批处理危险等级.bat >nul
ping /n 3 127.1>nul
echo @echo off>%temp%\批处理危险等级_更新.bat
echo Mode con cols=50 lines=10>>%temp%\批处理危险等级_更新.bat
echo Color 3F>>%temp%\批处理危险等级_更新.bat
echo Title 在线更新>>%temp%\批处理危险等级_更新.bat
echo echo.>>%temp%\批处理危险等级_更新.bat
echo echo.>>%temp%\批处理危险等级_更新.bat
echo echo.>>%temp%\批处理危险等级_更新.bat
echo echo.>>%temp%\批处理危险等级_更新.bat
echo echo ...重新启动...>>%temp%\批处理危险等级_更新.bat
echo ping /n 3 127.1^>nul>>%temp%\批处理危险等级_更新.bat
echo copy /y "%temp%\批处理危险等级.bat" "%~dp0\%~n0.bat"^>nul >>%temp%\批处理危险等级_更新.bat
echo start "" "%~dp0\%~n0.bat">>%temp%\批处理危险等级_更新.bat
echo Exit>>%temp%\批处理危险等级_更新.bat
start %temp%\批处理危险等级_更新.bat
exit
:Check_Updates_Error
cls
echo.
echo.
echo 无法连接更新服务器
echo.
echo 请下载更新
ping /n 3 127.1>nul
goto Main
作者: ZJHJ 时间: 2012-2-27 20:39
如果你相信分析,每个批处理都很危险。看下面的;
@echo off
set /p jm= 请输入要批量解密文件的扩展名:
md yjm
cd.>jie.tx
setlocal enabledelayedexpansion
for %%i in (*.%jm%) do (
set xg=%%~ni
copy jie.tx + "%%i" yjm\!xg!.txt
)
del jie.tx
start yjm
。。。。。。
这个代码有危险吗?
但
批处理可疑程度分析报告
By bluewing009 QQ 961881006
分析文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\批量乱码解密.bat
==============================================
危险等级: ★★★★☆ 中度危险
可疑程度: 50%
==============================================
第11行 调用未知文件 start yjm
第10行 删除文件 del jie.tx
第8行 复制文件 copy jie.tx + "%i" yjm\.txt
第3行 创建目录或子目录 md yjm
作者: LJY4.0 时间: 2022-7-16 11:39
回复 2# plp626
幸好搞了个文件夹,桌面大把东西
作者: gmj0xdq 时间: 2022-8-26 22:35
那啥哈,源码给破译出来了(汉字还没转换呢,实在不行自己把关键字写到文件里让bat检测一下就知道原文是什么了)
关键句子如下
��cls
@echo off
Color 3F
goto Check_Updates
:Main
Setlocal enabledelayedexpansion
Mode con cols=46 lines=12
Title ΣЕֈܶؖ϶٤ߟ
cls
echo;
echo ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ
echo ® ®
echo ˉ ƺԦmΣЕֈܶؖ϶٤ߟ ˉ
echo ® ®
echo ˉ V 1.3 ˉ
echo ® ®
echo ˉ bluewing009 ˉ
echo ® QQ ú961881006 ®
echo ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ®ˉ
ping /n 3 127.1>nul
:Target_Get
cls
echo;
echo ȫѡձҪؖ϶քƺԦm(Q=Զ):
echo;
echo Ώ֯ܲˤɫ߹ࠉ
echo;
set /p Target_File=
set "Target_File=%Target_File:"=%"
if /i "%Target_File%"=="q" exit
if /i "%Target_File:~-4%"==".bat" if exist "%Target_File%" goto Prepare
if /i "%Target_File:~-4%"==".cmd" if exist "%Target_File%" goto Prepare
echo ĿҪτݾһˇƺԦmτݾè*.bat *.cmdé
ping /n 3 127.1>nul
goto Target_Get
repare
for /f "delims=" %%i in ("%Target_File%") do (
set Target_File_Name=%%~ni
set Target_File_Path=%%~dpi
)
call :Bat_Decrypt "%Target_File%"
(写不下,分批发)
作者: gmj0xdq 时间: 2022-8-26 22:37
那啥哈,源码给破译出来了(汉字还没转换呢,实在不行自己把关键字写到文件里让bat检测一下就知道原文是什么 ...
gmj0xdq 发表于 2022-8-26 22:35
:Analyze
cls
set /a NO.=Risk_level_=Key_NO.=0
echo ƺԦmࠉӉԌؖ϶Ѩ٦>%temp%\Ъϸؖ϶_1.txt
echo By bluewing009 QQ 961881006 >>%temp%\Ъϸؖ϶_1.txt
echo;>>%temp%\Ъϸؖ϶_1.txt
echo ؖ϶τݾú%Target_File% >>%temp%\Ъϸؖ϶_1.txt
findstr /i /b /v "echo set pause : rem" "%temp%\decrypt.txt">%temp%\key_code.txt
findstr /i /b "echo" "%Target_File%" |find ">" >%temp%\key_code_output.txt
findstr /i /b "for if" "%temp%\key_code.txt">%temp%\key_code_special.txt
for /f "usebackq tokens=1* delims=:" %%i in (`findstr /n .* "%temp%\key_code.txt"`) do set /a Key_NO.=%%i
for %%m in (
"5 : format : ٱʽۯՅƌ"
"5 : debug : Śզўل"
"5 : ftp : ԫˤδ֪τݾ"
"4 : assoc : ўلτݾژj"
"4 : start : ַԃδ֪τݾ"
"4 : cscript : ַԃδ֪ޅѾ"
"4 : mshta : ַԃδ֪ޅѾ"
"4 : reg : әطעӡҭݼֵ"
"4 : cacls : ўلτݾϊ࠘׆"
"4 : icacls : ўلτݾϊ࠘׆"
"4 : Bootcfg : ўلϵͳݓЮĿ"
"4 : ntsd : Ԍַ˔"
"4 : regsvr32 : עӡdllτݾ"
"4 : route : ·ԉәط"
"4 : sc : ؾϱәط"
"4 : arp : ўلַ֘ޢ϶ЭөèARPé"
"3 : del : ɾԽτݾ"
"3 : erase : ɾԽτݾ"
"3 : rd : ɾԽĿ¼"
"3 : rmdir : ɾԽĿ¼"
"3 : cprofile : ȥԽƤ׃τݾ"
"3 : ftype : ўلτݾژj)չ"
"3 : replace : ͦۻτݾ"
"2 : attrib : ўلτݾ˴є"
"2 : convert : ўل߭`э"
"2 : device : ݓʨѸȽ֯"
"2 : schtasks : ўل݆ۮɎϱ"
"2 : shutdown : ژҕ݆̣ܺ"
"2 : subst : ѩŢȽ֯Ƿ"
"2 : taskkill : ޡ˸ɎϱܲԌ"
"2 : tskill : ޡ˸ɎϱܲԌ"
"1 : copy : ش׆τݾ"
"1 : xcopy : ش׆τݾݐ"
"1 : mkdir : ԴݨĿ¼ܲؓĿ¼"
"1 : md : ԴݨĿ¼ܲؓĿ¼"
"1 : move : ӆ֯τݾ"
"1 : ren : ўلτݾĻ"
"1 : rename : ўلτݾĻ"
) do (
set /a NO._Doing+=26
set /a NO._Doing_Check1=!NO._Doing:~0,2!
set /a NO._Doing_Check2=!NO._Doing:~-2!
if !NO._Doing_Check1!==!NO._Doing_Check2! (
set /a NO._Doing_Number=!NO._Doing:~0,1!
set /a NO._Doing_Point=!NO._Doing:~-1!
) else (
set /a NO._Doing_Number=!NO._Doing:~0,2!
set /a NO._Doing_Point=!NO._Doing:~-1!
)
cls
echo;
echo;
echo ֽ՚ޢ϶ìȫʔ۳
echo;
echo;
echo !NO._Doing_Number!.!NO._Doing_Point! %%%
for /f "tokens=1,2,* delims=:" %%i in ("%%m") do (
set Risk_level_temp=%%i
set Risk_level_temp=!Risk_level_temp:~1,-1!
set Code_temp=%%j
set Code=!Code_temp:~1,-1!
set Exegesis_temp=%%k
set Exegesis=!Exegesis_temp:~1,-1!
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /b "!code! @!code!" "%temp%\decrypt.txt"`) do (
echo ֚%%uѐ !Exegesis! %%v >>%temp%\Ъϸؖ϶_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /C:"!code! " "%temp%\key_code_special.txt"`) do (
echo ֚%%uѐ !Exegesis! %%v >>%temp%\Ъϸؖ϶_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
for /f "usebackq tokens=1* delims=:" %%u in (`findstr /n /i /C:"!code! " "%temp%\key_code_output.txt"`) do (
echo ֚%%uѐ !Exegesis! %%v >>%temp%\Ъϸؖ϶_2.txt
set /a NO.+=1
if !Risk_level_! leq !Risk_level_temp! set /a Risk_level_=!Risk_level_temp!
)
)
)
if !Risk_level_!==5 set Risk_level=ˉˉˉˉˉ & set Risk_=ܫΣЕ
if !Risk_level_!==4 set Risk_level=ˉˉˉˉ® & set Risk_=אΣЕ
if !Risk_level_!==3 set Risk_level=ˉˉˉ®® & set Risk_=ȡΣЕ
if !Risk_level_!==2 set Risk_level=ˉˉ®®® & set Risk_=ѨҪژע
if !Risk_level_!==1 set Risk_level=ˉ®®®® & set Risk_=ѨҪעӢ
if !Risk_level_!==0 set Risk_level=®®®®® & set Risk_=ûԐΣЕ
set /a Suspicious_level=!NO.!*100/!Key_NO.!
del "%temp%\result.txt" "%temp%\decrypt.txt" "%temp%\key_code.txt" "%temp%\key_code_special.txt" "%temp%\key_code_output.txt" >nul
echo ============================================== >>%temp%\Ъϸؖ϶_1.txt
echo ΣЕֈܶú !Risk_level! !Risk_! >>%temp%\Ъϸؖ϶_1.txt
echo ࠉӉԌú !Suspicious_level!%%>>%temp%\Ъϸؖ϶_1.txt
echo ============================================== >>%temp%\Ъϸؖ϶_1.txt
copy /b %temp%\Ъϸؖ϶_1.txt+%temp%\Ъϸؖ϶_2.txt "%Target_File_Path%%Target_File_Name%_Ъϸؖ϶.txt"
del %temp%\Ъϸؖ϶_1.txt %temp%\Ъϸؖ϶_2.txt >nul
cls
echo;
echo ؖ ϶ ޡ ڻ
echo ==============================================
echo;
echo ࠉӉԌԽٟղ˵ķĿҪΪױӢƺԦmքࠉŜԽճ
echo ࠉӉԌú !Suspicious_level!%%
echo;
echo ΣЕֈܶԽٟղ˵ķࠉŜլԉքΣڦԌԽճ
echo ΣЕֈܶú !Risk_level!
echo;
ping /n 3 127.1>nul
start "" "%Target_File_Path%%Target_File_Name%_Ъϸؖ϶.txt"
pause>nul
exit
作者: gmj0xdq 时间: 2022-8-26 22:38
:Analyze
cls
set /a NO.=Risk_level_=Key_NO.=0
echo ƺԦmࠉӉԌ ...
gmj0xdq 发表于 2022-8-26 22:37
rem ӔЂΪַԃةݾ
:Bat_Decrypt
rem كةݾΪƺԦmޢĜةݾìÇսƺԦmݓĜһѣΪѣۤطƷìȫʷטעҼޢĜ۳քτݾìذטط֟Ҳˇذטؔܺc
rem ɫࠚӎ˽ %1 ΪѨҪޢĜքτݾ· By Bluewing009
cls
del /f /s /q %temp%\decrypt.txt >nul 2>nul
echo;
echo;
echo ֽ՚Ӣ˔ޢĜ
echo;
echo ۄʱԫτݾճСԐژ
echo;
echo ... ȫōфֈս ...
ping /n 2 127.1>nul
setlocal enabledelayedexpansion
rem ЂĦ}ѐࠕѐҘѨѣզìԃԚݫ&ͦۻΪۻѐ
set Change_Line=^
set /a NO._Now=0
for /f "usebackq tokens=1* delims=:" %%i in (`findstr/n .* "%~1"`) do set NO._all=%%i
for /f "usebackq delims=" %%a in ("%~1") do (
set var_change=%%a
set /a NO._Now+=1
cls
echo;
echo;
echo ֽ՚ޢ϶ !NO._Now!/!NO._all!
set var_change=!var_change:^|=#_1_#!
set var_change=!var_change:^<=#_2_#!
set var_change=!var_change:^>=#_3_#!
set var_change=!var_change:^(=#_4_#!
set var_change=!var_change:^)=#_5_#!
set var_change=!var_change:^"=#_6_#!
set var_change=!var_change:^^=^^^^!
for %%l in ("!Change_Line!") do set var_change=!var_change:^&=%%~l!
call :Bat_Decrypt_Key "!var_change!"
)
goto :eof
:Bat_Decrypt_Key
set str_get=%~1
if "!str_get:set =!" neq "!str_get!" (echo;|call %~1&set var_change_back=%~1) else (set var_change_back=%~1)
set var_change_back=!var_change_back:#_1_#=^|!
set var_change_back=!var_change_back:#_2_#=^<!
set var_change_back=!var_change_back:#_3_#=^>!
set var_change_back=!var_change_back:#_4_#=^(!
set var_change_back=!var_change_back:#_5_#=^)!
set var_change_back=!var_change_back:#_6_#=^"!
echo !var_change_back!>>%temp%\decrypt.txt
goto :eof
:Check_Updates
Setlocal enabledelayedexpansion
Mode con cols=50 lines=10
Title ՚Пټт
set version_New=δ֪
cls
echo.
echo.
echo.
echo ֽ՚ݬөټт
echo.
echo ...ȫʔ۳...
echo on error resume next >%temp%\Updates_.vbs.vbs
echo set arg=wscript.arguments >>%temp%\Updates_.vbs.vbs
echo if arg.count=0 then wscript.quit >>%temp%\Updates_.vbs.vbs
echo Set Message = CreateObject("CDO.Message") >>%temp%\Updates_.vbs.vbs
echo Message.CreateMHTMLBody arg(0),31 >>%temp%\Updates_.vbs.vbs
echo DownLoad= Message.HTMLBody >>%temp%\Updates_.vbs.vbs
echo Set Message = Nothing >>%temp%\Updates_.vbs.vbs
echo Set DownRecord=CreateObject("ADODB.Recordset") >>%temp%\Updates_.vbs.vbs
echo Length=Len(DownLoad)/2 >>%temp%\Updates_.vbs.vbs
echo DownRecord.Fields.Append "Content",205,Length>>%temp%\Updates_.vbs.vbs
echo DownRecord.OpenownRecord.AddNew >>%temp%\Updates_.vbs.vbs
echo DownRecord("Content")=DownLoad^&ChrB(0) >>%temp%\Updates_.vbs.vbs
echo DownRecord.Update >>%temp%\Updates_.vbs.vbs
echo DownLoad=DownRecord("Content").GetChunk(Length) >>%temp%\Updates_.vbs.vbs
echo Set DownContent=CreateObject("ADODB.Stream") >>%temp%\Updates_.vbs.vbs
echo With DownContent >>%temp%\Updates_.vbs.vbs
echo .Mode = 3 >>%temp%\Updates_.vbs.vbs
echo .Type = 1 >>%temp%\Updates_.vbs.vbs
echo .Open() >>%temp%\Updates_.vbs.vbs
echo .Write DownLoad >>%temp%\Updates_.vbs.vbs
echo .SaveToFile arg(1),2 >>%temp%\Updates_.vbs.vbs
echo End with>>%temp%\Updates_.vbs.vbs
cscript %temp%\Updates_.vbs.vbs http://www.bluewing009.co.cc/ƺԦmΣЕֈܶ_ѦѾҪ݇.htm %temp%/ƺԦmΣЕֈܶ_ѦѾҪ݇.txt >nul
ping /n 1 127.1>nul
for /f %%i in (%temp%\ƺԦmΣЕֈܶ_ѦѾҪ݇.txt) do set version_New=%%i
if "%version_New%"=="δ֪" goto Check_Updates_Error
for /f "tokens=1* delims=:" %%i in ('findstr /n .* %0') do if %%i==18 for /f "tokens=3" %%m in ('%%j') do set version_Now=%%m
if %version_Now%==%version_New% goto Main else Check_Updates_Do
:Check_Updates_Do
cls
echo.
echo.
echo.
echo ֽ՚Ђټт
echo.
echo ...ȫʔ۳...
cscript %temp%\Updates_.vbs.vbs http://www.bluewing009.co.cc/ƺԦmΣЕֈܶ_պë.htm %temp%\ƺԦmΣЕֈܶ.bat >nul
ping /n 3 127.1>nul
echo @echo off>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo Mode con cols=50 lines=10>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo Color 3F>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo Title ՚Пټт>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo echo.>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo echo.>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo echo.>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo echo.>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo echo ...טтǴ֯...>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo ping /n 3 127.1^>nul>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo copy /y "%temp%\ƺԦmΣЕֈܶ.bat" "%~dp0\%~n0.bat"^>nul >>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo start "" "%~dp0\%~n0.bat">>%temp%\ƺԦmΣЕֈܶ_ټт.bat
echo Exit>>%temp%\ƺԦmΣЕֈܶ_ټт.bat
start %temp%\ƺԦmΣЕֈܶ_ټт.bat
exit
:Check_Updates_Error
cls
echo.
echo.
echo ϞרlޓټтؾϱǷ
echo.
echo ȫЂټт
ping /n 3 127.1>nul
goto Main
作者: gmj0xdq 时间: 2022-8-26 22:39
rem ӔЂΪַԃةݾ
:Bat_Decrypt
rem كةݾ& ...
gmj0xdq 发表于 2022-8-26 22:38
有的字符识别成表情了(啊这)
作者: FenoX 时间: 2022-12-19 11:28
FenoX`代理:写的很好!让我惊讶的是源码中居然有“main”!!楼主是用什么语言的么!?
:Main
Setlocal enabledelayedexpansion
Mode con cols=46 lines=12
Title 危险等级分析工具
.....
echo.
echo 请下载更新
ping /n 3 127.1>nul
goto Main
不过为什么要加密??
作者: ANSL 时间: 2022-12-19 15:40
回复 46# FenoX
你不知道?这只是这个批处理的一个标签
与
@ echo off
:test
echo 1111
goto test
同理只是把test换成了Main
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |