快速业务通道

vbs脚本 加密 几个小细节小结下

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09

复制代码 代码如下:

dxy:
你好!
我学vbs也有一小段时间了,最近看到一本书上讲vbs脚本的加密,就自己试了试,可是有一点问题,低级的语法错误我都自己修正了,可脚本运行后不起作用.所以想请教你一下.脚本的原理是这样的:它把代码转换成16进制,然后再写个解密代码,通过这个解密来执行加密的代码,将字符串成16进制的代码如下:
Functionstr2hex(ByvalstrHex)
Fori=1toLen(strHex)
sHex=sHex&Hex(Asc(mid(strHex,i,1)))
next
str2Hex=sHex
endFunction

解密的代码如下:

Functionhextostr(data)
Hextostr="Execute"""""
C="&Chr(&H"
N=")"
DowhileLen(data)>1
ifIsNumeric(Left(data,1))then
Hextostr=Hextostr&c&Left(data,2)&N
data=mid(data,3)
else
Hextostr=HextoStr&C&Left(data,4)&N
data=mid(data,5)
endif
loop
endFunction

解密代码好象有点问题,请帮忙指正,我实在找不出

整个成品就是:

onerrorresumenext
setarg=wscript.arguement''声明外部参数
ifarg.count=0Thenwscript.quit''若无参数则退出脚本
setfso=creatobject("Scripting.FilesystemObject")''声明fso组件
whenfso.opentextfile(arg(0),1,flase)
data=readall:.close''读取文本内容
iferr.number<>0thenwscript.quit''如果发生错误,则退出
withfso.opentextfile(arg(0)&"*.vbs",2,true)''将转换好的写到一个新的vbs中
iferr.number<>0thenwscript.quit''如果发生错误,则退出
.writeline"Execute(Hextostr("""&str2hex(data)&"""))"''执行解密并执行解密后的代码
.writeline"Functionhextostr(data)"
.writeline"Hextostr=""Execute"""""""""""
.writeline"C=""&CHR(&H"""
.writeline"N=)"
.writeline"DowhileLen(data)>1"
.writeline"ifIsNumeric(Left(data,1))then"
.writeline"Hextostr=Hextostr&c&Left(data,2)&N"
.writeline"data=(data,3)"
.writeline"else"
.writeline"Hextostr=Hextostr&c&Left(data,4)&N"
.writeline"data=mid(data,5)"
.writeline"endif"
.writeline"loop"
.writeline"endfunction"
''把解密函数写进去
.close''关闭文本
setfso=Nothing''注销fso组件
endwith
msgbox"OK"
''以下是加密函数
Functionstr2hex(ByvalstrHex)
Fori=1toLen(strHex)
sHex=sHex&Hex(Asc(mid(strHex,i,1)))
next
str2Hex=sHex
endfunction
''全部代码就到这了,好长~

书上说,把要加密的vbs脚本拖到这个脚本上就行了,不过我没有成功,不知道那里有问题,请帮帮我,谢谢~

上面的代码注意的几个情况:
1、setarg=wscript.arguements
后门有个s
2、setfso=creatobject("Scripting.FilesystemObject")''声明fso组件
应该是filesystemboject
3、.writeline"N=)"
对于需要输出N=")"用vbs输入"(双引号)的方法就是用两个""
.writeline "N="")"""
4、.writeline"data=(data,3)"这里少个mid
基本上就这些了
do.vbs保存为do.vbs ,将要加密的js文件拖到这个文件上就可以
复制代码 代码如下:

''onerrorresumenext
setarg=wscript.arguments''声明外部参数
ifarg.count=0Thenwscript.quit''若无参数则退出脚本
setfso=createobject("Scripting.FilesystemObject")''声明fso组件
filename=wscript.arguments(0)
setreadline=fso.opentextfile(filename,1,flase)
data=readline.readall:
readline.close''读取文本内容
iferr.number<>0thenwscript.quit''如果发生错误,则退出
withfso.opentextfile(filename&"_out.vbs",2,true)''将转换好的写到一个新的vbs中
iferr.number<>0thenwscript.quit''如果发生错误,则退出
.writeline"Execute(Hextostr("""&str2hex(data)&"""))"''执行解密并执行解密后的代码
.writeline"Functionhextostr(data)"
.writeline"Hextostr=""Execute"""""""""""
.writeline"C=""&CHR(&H"""
.writeline"N="")"""
.writeline"DowhileLen(data)>1"
.writeline"ifIsNumeric(Left(data,1))then"
.writeline"Hextostr=Hextostr&c&Left(data,2)&N"
.writeline"data=mid(data,3)"
.writeline"else"
.writeline"Hextostr=Hextostr&c&Left(data,4)&N"
.writeline"data=mid(data,5)"
.writeline"endif"
.writeline"loop"
.writeline"endfunction"
''把解密函数写进去
.close''关闭文本
endwith
setfso=Nothing''注销fso组件
msgbox"OK"
''以下是加密函数
Functionstr2hex(ByvalstrHex)
Fori=1toLen(strHex)
sHex=sHex&Hex(Asc(mid(strHex,i,1)))
next
str2Hex=sHex
endfunction

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号