![Board logo](images/default/logo.gif)
标题: [加密解密] 批处理解密破解已经加密的VBS(2009-04-25更新) [打印本页]
作者: Batcher 时间: 2009-3-8 00:38 标题: 批处理解密破解已经加密的VBS(2009-04-25更新)
所谓知己知彼方可百战不殆,要想知道如何解密,就得知道如何加密。我们将通过下面的几个例子来共同学习一些入门知识。
【方案一】ASCII <<=>> VBS
[attach]1200[/attach]
此类加密工具通常是把VBS明文代码转换成ASCII码(十进制或十六进制),加密以后的代码如下EncodeTest.vbs:- HqwStr = Array(97,61,109,115,103,98,111,120,40,34,67,114,97,99,107,32,109,101,33,34,41,13,10,98,61,109,115,103,98,111,120,40,34,67,111,110,103,114,97,116,117,108,97,116,101,115,33,34,41,13,10)
- Execute Num2Str(HqwStr)
- Function Num2Str(HqwStr)
- For I=0 To UBound(HqwStr)
- Num2Str = Num2Str & Chr(HqwStr(I))
- Next
- End Function
复制代码
我们把其中的ASCII码复制出来,保存到一个文本文件中a.txt:- 97,61,109,115,103,98,111,120,40,34,67,114,97,99,107,32,109,101,33,34,41,13,10,98,61,109,115,103,98,111,120,40,34,67,111,110,103,114,97,116,117,108,97,116,101,115,33,34,41,13,10
复制代码
用下面的批处理来解密即可DecodeTest.bat:- @echo off
- ::Batcher@bbs.bathome.net
- ::2009-03-08
- ::批处理解密破解已经加密的VBS(ASCII2VBS)@CMD@XP
- ::http://bbs.bathome.net/thread-3637-1-1.html
-
- rem 待解密的以逗号分隔的ASCII码(十进制或十六进制)文件
- set "FileASCII=C:\test\a.txt"
- set "FileResult=%temp%\DecResult.txt"
- set ChrNum=
- set /p DecCode=<"%FileASCII%"
- set DecCode=head,%DecCode%,tail
-
- :Num2Chr
- set DecCode=%DecCode:*,=%
- if "%DecCode%" neq "tail" (
- if "%DecCode%" neq "" (
- call :SplitDec %DecCode%
- goto :Num2Chr
- )
- )
- echo OutPutFile="%FileResult%">"%temp%\Decode.vbs"
- echo Set objFSO=CreateObject("Scripting.FileSystemObject")>>"%temp%\Decode.vbs"
- echo Set objTXT=objFSO.CreateTextFile(OutPutFile,True,False)>>"%temp%\Decode.vbs"
- echo ChrVBS=""%ChrNum%>>"%temp%\Decode.vbs"
- echo objTXT.Write ChrVBS>>"%temp%\Decode.vbs"
- cscript //nologo "%temp%\Decode.vbs"
- start "" "%FileResult%"
- goto:eof
-
- :SplitDec
- set ChrNum=%ChrNum%+Chr(%1)
复制代码
那么,请问解密以后的内容究竟是啥模样呢?啊,这位朋友问的好!当~当~当~当~,各位观众(请自行模仿周星驰的配音):- a=msgbox("Crack me!")
- b=msgbox("Congratulates!")
复制代码
作者: Batcher 时间: 2009-3-8 00:39 标题: 【方案二】拦截VBS密文中的Execute函数
我们仍然用顶楼的密文代码作为例子EncodeTest.vbs:- HqwStr = Array(97,61,109,115,103,98,111,120,40,34,67,114,97,99,107,32,109,101,33,34,41,13,10,98,61,109,115,103,98,111,120,40,34,67,111,110,103,114,97,116,117,108,97,116,101,115,33,34,41,13,10)
- Execute Num2Str(HqwStr)
- Function Num2Str(HqwStr)
- For I=0 To UBound(HqwStr)
- Num2Str = Num2Str & Chr(HqwStr(I))
- Next
- End Function
复制代码
已经具备VBS入门知识的朋友,应该可以看出密文中的自解密函数中没有什么猫腻,纯粹是一个自解密函数而已。所以我们可以直接派拦截函数上阵杀敌。- HqwStr = Array(97,61,109,115,103,98,111,120,40,34,67,114,97,99,107,32,109,101,33,34,41,13,10,98,61,109,115,103,98,111,120,40,34,67,111,110,103,114,97,116,117,108,97,116,101,115,33,34,41,13,10)
- '注释掉原来的Execute函数以防止可能存在的恶意代码对系统造成损害
- 'Execute Num2Str(HqwStr)
- '用我们自己的拦截函数去执行
- Intercept Num2Str(HqwStr)
-
- Function Num2Str(HqwStr)
- For I=0 To UBound(HqwStr)
- Num2Str = Num2Str & Chr(HqwStr(I))
- Next
- End Function
-
- '拦截函数
- Sub Intercept (code)
- OutPutFile="DecodeVBS.txt"
- Set objFSO=CreateObject("Scripting.FileSystemObject")
- Set objTXT=objFSO.CreateTextFile(OutPutFile,True,False)
- objTXT.Write code
- objTXT.Close
- Set objWSH=CreateObject("WScript.Shell")
- objWSH.Run OutPutFile
- WScript.Quit
- End Sub
复制代码
熟悉而亲切的明文再次出现,哈哈,拦截函数小胜一阵。今日不可贸然追击,前方恐有伏军。鸣金收兵,易日再战可也。- a=msgbox("Crack me!")
- b=msgbox("Congratulates!")
复制代码
[2009-04-25]下面是一个挺有意思的密文(如果看不懂,请不要执行,否则可能损害您的电脑),大家练练手吧 ^_^
链接: https://pan.baidu.com/s/158x37C9UyoseeAo01k06Zw?pwd=a3np
作者: Batcher 时间: 2009-3-8 00:39 标题: 【方案三】注入VBS密文中的Execute函数
这次我们使用的加密工具是VBS随机加密器.vbs:- '''''''''''''''''''''''''''''''''''''''''''
- ''' (P)&(C)2009 VBS随机加密器 '''
- ''' '''
- ''' qinchun36 www.cn-dos.net '''
- '''''''''''''''''''''''''''''''''''''''''''
-
-
-
- if wscript.arguments.count=0 then
- msgbox "1. 用鼠标把目标文件拖到我上面来..."&vbcrlf&vbcrlf&"2. 命令行 wscript rndEncode.vbs %1",16,"使用方法"
- else
- origfile=wscript.arguments(0)
- set fso=createobject("scripting.filesystemobject")
- set ching=wscript.createobject("wscript.shell")
- with fso.getfile(origfile):fpath=.parentfolder&"\":fname="new_"&.name:end with
- n=chr(58)
- m=chr(34)
-
- with fso.opentextfile(origfile)
- do
- tmpstr=.read(1)
- encoded=encoded&asc(tmpstr)
- if (.atendofstream=true) then exit do
- Randomize
- fenge=chr(Int(6*Rnd+65))
- encoded=encoded&fenge
- loop
- .close
- end with
-
- headstr="REM - 版权所有 - 翻版不究 - 据说是李先生 - qinchun36@tom.com"&vbcrlf&vbcrlf
- He="He="&m&left(encoded,int(len(encoded)/2))&m&n
- Fucking="FUNCTION Fuck(lO):O="&m&"6C3D434852283739293A464F52204A3D363520544F2037303A6C6C3D434852284A293A4F3D53504C4954286C4F2C6C6C2C2D312C31293A6C4F3D4E554C4C3A464F5220493D3020544F202855424F554E44284F292D31293A6C4F3D6C4F264F284929266C3A4E4558543A6C4F3D6C4F264F2855424F554E44284F29293A4E4558543A4F3D53504C4954286C4F2C6C2C2D312C31293A6C4F3D4E554C4C3A464F5220493D3020544F202855424F554E44284F29293A6C4F3D6C4F26434852284F284929293A4E4558543A45584543555445206C4F3A6C4F3D22272020434F4E54414354203A2071696E6368756E33362066726F6D205757572E434E2D444F532E4E45542020202722"&m&":OO="&m&"EXECUTE "&m&m&m&m&m&":l="&m&"&CHR(&H"&m&":ll="&m&")"&m&":EXECUTE("&m&"DO WHILE LEN(O)>1:OO=OO&l&LEFT(O,2)&ll:O=MID(O,3)"&m&"&VBCRLF&"&m&"LOOP"&m&"):EXECUTE(OO):Fuck=lO:END FUNCTION"&n
- Her="Her="&m&right(encoded,len(encoded)-int(len(encoded)/2))&m
- tailstr=vbcrlf&vbcrlf&"You = He + Her"&vbcrlf&vbcrlf&"EXECUTE Fuck(You)"&vbcrlf&vbcrlf&"REM - (P)&(C)"&YEAR(NOW)&" ALL RIGHTS RESERVED"
-
- fso.createtextfile(fpath&fname,true).write(headstr+He+Fucking+Her+tailstr)
-
- msgbox "转换后的文件是"&chr(13)&chr(13)&fpath&fname,48,"Mr Ching 提示你"
-
- end if
复制代码
加密之后的代码EncodeTest.vbs:- REM - 版权所有 - 翻版不究 - 据说是李先生 - qinchun36@tom.com
-
- He="97E61D109C115F103D98C111E120F40D34D67C114A97D99A107B32D109B101D33B34C41F13D10D98C61E109E":FUNCTION Fuck(lO):O="6C3D434852283739293A464F52204A3D363520544F2037303A6C6C3D434852284A293A4F3D53504C4954286C4F2C6C6C2C2D312C31293A6C4F3D4E554C4C3A464F5220493D3020544F202855424F554E44284F292D31293A6C4F3D6C4F264F284929266C3A4E4558543A6C4F3D6C4F264F2855424F554E44284F29293A4E4558543A4F3D53504C4954286C4F2C6C2C2D312C31293A6C4F3D4E554C4C3A464F5220493D3020544F202855424F554E44284F29293A6C4F3D6C4F26434852284F284929293A4E4558543A45584543555445206C4F3A6C4F3D22272020434F4E54414354203A2071696E6368756E33362066726F6D205757572E434E2D444F532E4E45542020202722":OO="EXECUTE """"":l="&CHR(&H":ll=")":EXECUTE("DO WHILE LEN(O)>1:OO=OO&l&LEFT(O,2)&ll:O=MID(O,3)"&VBCRLF&"LOOP"):EXECUTE(OO):Fuck=lO:END FUNCTION:Her="115B103D98A111B120A40C34C67E111A110A103B114D97C116F117B108D97A116C101B115A33E34F41F13F10"
-
- You = He + Her
-
- EXECUTE Fuck(You)
-
- REM - (P)&(C)2009 ALL RIGHTS RESERVED
复制代码
直接用方案二是不行的,因为密文自带的解密函数本身也被加密了,而且耍了一些小手腕。不是我们的拦截函数太笨,而是加密函数太狡猾了,它居然穿上了马甲。
我们先把EXECUTE(OO)替换成WScript.Echo(OO),然后执行命令:- cscript /nologo EncodeTest.vbs>DecodeTmp.vbs
复制代码
得到新的VBS文件DecodeTmp.vbs:- EXECUTE ""&CHR(&H6C)&CHR(&H3D)&CHR(&H43)&CHR(&H48)&CHR(&H52)&CHR(&H28)&CHR(&H37)&CHR(&H39)&CHR(&H29)&CHR(&H3A)&CHR(&H46)&CHR(&H4F)&CHR(&H52)&CHR(&H20)&CHR(&H4A)&CHR(&H3D)&CHR(&H36)&CHR(&H35)&CHR(&H20)&CHR(&H54)&CHR(&H4F)&CHR(&H20)&CHR(&H37)&CHR(&H30)&CHR(&H3A)&CHR(&H6C)&CHR(&H6C)&CHR(&H3D)&CHR(&H43)&CHR(&H48)&CHR(&H52)&CHR(&H28)&CHR(&H4A)&CHR(&H29)&CHR(&H3A)&CHR(&H4F)&CHR(&H3D)&CHR(&H53)&CHR(&H50)&CHR(&H4C)&CHR(&H49)&CHR(&H54)&CHR(&H28)&CHR(&H6C)&CHR(&H4F)&CHR(&H2C)&CHR(&H6C)&CHR(&H6C)&CHR(&H2C)&CHR(&H2D)&CHR(&H31)&CHR(&H2C)&CHR(&H31)&CHR(&H29)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H4E)&CHR(&H55)&CHR(&H4C)&CHR(&H4C)&CHR(&H3A)&CHR(&H46)&CHR(&H4F)&CHR(&H52)&CHR(&H20)&CHR(&H49)&CHR(&H3D)&CHR(&H30)&CHR(&H20)&CHR(&H54)&CHR(&H4F)&CHR(&H20)&CHR(&H28)&CHR(&H55)&CHR(&H42)&CHR(&H4F)&CHR(&H55)&CHR(&H4E)&CHR(&H44)&CHR(&H28)&CHR(&H4F)&CHR(&H29)&CHR(&H2D)&CHR(&H31)&CHR(&H29)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H6C)&CHR(&H4F)&CHR(&H26)&CHR(&H4F)&CHR(&H28)&CHR(&H49)&CHR(&H29)&CHR(&H26)&CHR(&H6C)&CHR(&H3A)&CHR(&H4E)&CHR(&H45)&CHR(&H58)&CHR(&H54)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H6C)&CHR(&H4F)&CHR(&H26)&CHR(&H4F)&CHR(&H28)&CHR(&H55)&CHR(&H42)&CHR(&H4F)&CHR(&H55)&CHR(&H4E)&CHR(&H44)&CHR(&H28)&CHR(&H4F)&CHR(&H29)&CHR(&H29)&CHR(&H3A)&CHR(&H4E)&CHR(&H45)&CHR(&H58)&CHR(&H54)&CHR(&H3A)&CHR(&H4F)&CHR(&H3D)&CHR(&H53)&CHR(&H50)&CHR(&H4C)&CHR(&H49)&CHR(&H54)&CHR(&H28)&CHR(&H6C)&CHR(&H4F)&CHR(&H2C)&CHR(&H6C)&CHR(&H2C)&CHR(&H2D)&CHR(&H31)&CHR(&H2C)&CHR(&H31)&CHR(&H29)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H4E)&CHR(&H55)&CHR(&H4C)&CHR(&H4C)&CHR(&H3A)&CHR(&H46)&CHR(&H4F)&CHR(&H52)&CHR(&H20)&CHR(&H49)&CHR(&H3D)&CHR(&H30)&CHR(&H20)&CHR(&H54)&CHR(&H4F)&CHR(&H20)&CHR(&H28)&CHR(&H55)&CHR(&H42)&CHR(&H4F)&CHR(&H55)&CHR(&H4E)&CHR(&H44)&CHR(&H28)&CHR(&H4F)&CHR(&H29)&CHR(&H29)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H6C)&CHR(&H4F)&CHR(&H26)&CHR(&H43)&CHR(&H48)&CHR(&H52)&CHR(&H28)&CHR(&H4F)&CHR(&H28)&CHR(&H49)&CHR(&H29)&CHR(&H29)&CHR(&H3A)&CHR(&H4E)&CHR(&H45)&CHR(&H58)&CHR(&H54)&CHR(&H3A)&CHR(&H45)&CHR(&H58)&CHR(&H45)&CHR(&H43)&CHR(&H55)&CHR(&H54)&CHR(&H45)&CHR(&H20)&CHR(&H6C)&CHR(&H4F)&CHR(&H3A)&CHR(&H6C)&CHR(&H4F)&CHR(&H3D)&CHR(&H22)&CHR(&H27)&CHR(&H20)&CHR(&H20)&CHR(&H43)&CHR(&H4F)&CHR(&H4E)&CHR(&H54)&CHR(&H41)&CHR(&H43)&CHR(&H54)&CHR(&H20)&CHR(&H3A)&CHR(&H20)&CHR(&H71)&CHR(&H69)&CHR(&H6E)&CHR(&H63)&CHR(&H68)&CHR(&H75)&CHR(&H6E)&CHR(&H33)&CHR(&H36)&CHR(&H20)&CHR(&H66)&CHR(&H72)&CHR(&H6F)&CHR(&H6D)&CHR(&H20)&CHR(&H57)&CHR(&H57)&CHR(&H57)&CHR(&H2E)&CHR(&H43)&CHR(&H4E)&CHR(&H2D)&CHR(&H44)&CHR(&H4F)&CHR(&H53)&CHR(&H2E)&CHR(&H4E)&CHR(&H45)&CHR(&H54)&CHR(&H20)&CHR(&H20)&CHR(&H20)&CHR(&H27)&CHR(&H22)
复制代码
把其中的EXECUTE替换成WScript.Echo,然后运行命令:- cscript /nologo DecodeTmp.vbs>a.txt
复制代码
得到明文解密函数a.txt:- l=CHR(79):FOR J=65 TO 70:ll=CHR(J):O=SPLIT(lO,ll,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)-1):lO=lO&O(I)&l:NEXT:lO=lO&O(UBOUND(O)):NEXT:O=SPLIT(lO,l,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)):lO=lO&CHR(O(I)):NEXT:EXECUTE lO:lO="' CONTACT : qinchun36 from WWW.CN-DOS.NET '"
复制代码
用明文解密函数去替代密文解密函数:- REM - 版权所有 - 翻版不究 - 据说是李先生 - qinchun36@tom.com
-
- He="97E61E109C115F103E98D111E120F40D34D67C114A97D99A107C32D109B101D33B34C41F13D10D98C61F109E":FUNCTION Fuck(lO):l=CHR(79):FOR J=65 TO 70:ll=CHR(J):O=SPLIT(lO,ll,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)-1):lO=lO&O(I)&l:NEXT:lO=lO&O(UBOUND(O)):NEXT:O=SPLIT(lO,l,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)):lO=lO&CHR(O(I)):NEXT:EXECUTE lO:lO="' CONTACT : qinchun36 from WWW.CN-DOS.NET '":Fuck=lO:END FUNCTION:Her="115B103D98A111B120A40C34C67E111A110B103C114D97C116A117B108E97A116C101B115A33E34F41F13F10"
-
- You = He + Her
-
- EXECUTE Fuck(You)
-
- REM - (P)&(C)2009 ALL RIGHTS RESERVED
复制代码
现在可以派我们的拦截函数出场了:- REM - 版权所有 - 翻版不究 - 据说是李先生 - qinchun36@tom.com
-
- He="97E61E109C115F103E98D111E120F40D34D67C114A97D99A107C32D109B101D33B34C41F13D10D98C61F109E":FUNCTION Fuck(lO):l=CHR(79):FOR J=65 TO 70:ll=CHR(J):O=SPLIT(lO,ll,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)-1):lO=lO&O(I)&l:NEXT:lO=lO&O(UBOUND(O)):NEXT:O=SPLIT(lO,l,-1,1):lO=NULL:FOR I=0 TO (UBOUND(O)):lO=lO&CHR(O(I)):NEXT:Intercept lO:lO="' CONTACT : qinchun36 from WWW.CN-DOS.NET '":Fuck=lO:END FUNCTION:Her="115B103D98A111B120A40C34C67E111A110B103C114D97C116A117B108E97A116C101B115A33E34F41F13F10"
-
- You = He + Her
-
- EXECUTE Fuck(You)
-
- REM - (P)&(C)2009 ALL RIGHTS RESERVED
-
- '拦截函数
- Sub Intercept (code)
- OutPutFile="DecodeVBS.txt"
- Set objFSO=CreateObject("Scripting.FileSystemObject")
- Set objTXT=objFSO.CreateTextFile(OutPutFile,True,False)
- objTXT.Write code
- objTXT.Close
- Set objWSH=CreateObject("WScript.Shell")
- objWSH.Run OutPutFile
- WScript.Quit
- End Sub
复制代码
运行上面的VBS代码,就能得到明文啦:- a=msgbox("Crack me!")
- b=msgbox("Congratulates!")
复制代码
拦截函数立功啦!拦截函数立功啦!不要给加密函数任何的机会!”
“伟大的批处理之家的拦截函数,他继承了批处理之家的光荣的传统,批处理之家这一刻灵魂附体!拦截函数一个人,他代表了批处理之家悠久的历史和传统!在这一刻!他不是一个人在战斗!他不是一个人!!”
“拦截函数!拦截函数面对着密文……他面对着全世界脚本爱好者的目光,和期待。批处理在世界杯的破解赛当中战胜过很多个密文,拦截函数肯定深知这一点,他还能够微笑着面对他面前的这个密文吗吗……十秒钟以后,他会是怎样的表情?”
“密文被破解啦!!!比赛结束啦!!!拦截函数获得了胜利!淘汰了加密工具!”
“他们没有再一次倒在狡猾的加密函数面前!伟大的拦截函数!伟大的批处理之家!!拦截函数今天生日快乐——!!批处理之家万岁!!!”
“伟大的拦截函数,脚本爱好者的期望,这个破解是一个绝对理论上的决杀。绝对的死角,拦截函数进入了八强!”
“这个胜利属于拦截函数,属于VBS,属于批处理之家,属于Batcher,属于所有热爱开源脚本的人!”
“加密工具也许会后悔的,加密函数在下半时他们多一人的情况下打得太保守、太沉稳了,他失去了自己在小组赛的那种勇气,面对拦截函数悠久的历史,他失去了他在小组赛中那种猛扑猛打的作风,他终于自食其果。加密工具该回家了,也许他们不用回遥远的加密世界,他们不用回家,因为他们大多数人都在不愿意分享代码、固步自封、敝帚自珍的人的心中,再见!”
作者: Batcher 时间: 2009-3-8 00:39 标题: 【方案四】替换VBS密文中的Execute函数
待续...
作者: 小勇12 时间: 2009-3-8 12:49
学习收下了,顶起!!!
作者: 小勇12 时间: 2009-3-15 14:14
方案三和四呢?
快点出来哟
好期待哟
作者: defanive 时间: 2009-3-15 14:36
VBS、BAT的安全性实在低,若知其解密方法,得到明文简直易如反掌。。。
作者: Batcher 时间: 2009-3-18 14:12 标题: 回复 6楼 的帖子
方案三来了,呵呵。
方案四还得等等,最近公司比较忙。
作者: tbx 时间: 2009-4-26 13:04
那里跟新了?
我怎么没看到》
作者: Batcher 时间: 2009-4-26 13:14 标题: 回复 9楼 的帖子
为了能够让更新的内容比较容易被发现,我当时特意使用了蓝色字体,要不你再仔细看看?
作者: hjh700913 时间: 2009-5-8 13:52
小心地问一下,任何VBS的密码都可以破解吗?
作者: pengtmy 时间: 2010-10-19 14:48 标题: 谢谢
好强大··我就是要学加密vbs
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |