vbs脚本 加密 几个小细节小结下 |
本文标签:vbs,脚本,加密 复制代码 代码如下: dxy: 你好! 我学vbs也有一小段时间了,最近看到一本书上讲vbs脚本的加密,就自己试了试,可是有一点问题,低级的语法错误我都自己修正了,可脚本运行后不起作用.所以想请教你一下.脚本的原理是这样的:它把代码转换成16进制,然后再写个解密代码,通过这个解密来执行加密的代码,将字符串成16进制的代码如下: Function str2hex (Byval strHex) For i=1 to Len(strHex) sHex = sHex & Hex(Asc(mid(strHex,i,1))) next str2Hex = sHex end Function 解密的代码如下: Function hextostr(data) Hextostr = "Execute""""" C= "&Chr(&H" N= ")" Do while Len(data)>1 if IsNumeric (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) end if loop end Function 解密代码好象有点问题,请帮忙指正,我实在找不出 整个成品就是: on error resume next set arg=wscript.arguement 声明外部参数 if arg.count=0 Then wscript.quit 若无参数则退出脚本 set fso=creatobject("Scripting.Filesystem Object") 声明fso组件 when fso.opentextfile(arg(0),1,flase) data = readall:.close读取文本内容 if err.number<>0 then wscript.quit 如果发生错误,则退出 with fso.opentextfile(arg(0)&"*.vbs",2,true) 将转换好的写到一个新的vbs中 if err.number<>0 then wscript.quit 如果发生错误,则退出 .writeline "Execute(Hextostr("""&str2hex(data)&"""))" 执行解密并执行解密后的代码 .writeline "Function hextostr(data)" .writeline "Hextostr=""Execute""""""""""" .writeline "C=""&CHR(&H""" .writeline "N= )" .writeline "Do while Len(data)>1" .writeline "if IsNumeric (Left(data,1)) then" .writeline "Hextostr=Hextostr&c&Left(data,2)&N" .writeline "data = (data,3)" .writeline "else" .writeline "Hextostr=Hex to str&c&Left(data,4)&N" .writeline "data=mid(data,5)" .writeline "end if" .writeline "loop" .writeline "end function" 把解密函数写进去 .close 关闭文本 set fso=Nothing注销fso组件 end with msgbox "OK" 以下是加密函数 Function str2hex (Byval strHex) For i=1 to Len(strHex) sHex = sHex & Hex(Asc(mid(strHex,i,1))) next str2Hex = sHex end function 全部代码就到这了,好长' 书上说,把要加密的vbs脚本拖到这个脚本上就行了,不过我没有成功,不知道那里有问题,请帮帮我,谢谢' 上面的代码注意的几个情况: 1、set arg=wscript.arguements 后门有个s 2、set fso=creatobject("Scripting.Filesystem Object") 声明fso组件 应该是filesystemboject 3、.writeline "N= )" 对于需要输出N=")"用vbs输入"(双引号)的方法就是用两个"" .writeline "N="")""" 4、.writeline "data = (data,3)"这里少个mid 基本上就这些了 do.vbs保存为do.vbs ,将要加密的js文件拖到这个文件上就可以 复制代码 代码如下: on error resume next set arg=wscript.arguments 声明外部参数 if arg.count=0 Then wscript.quit 若无参数则退出脚本 set fso=createobject("Scripting.FilesystemObject") 声明fso组件 filename=wscript.arguments(0) set readline=fso.opentextfile(filename,1,flase) data=readline.readall: readline.close 读取文本内容 if err.number<>0 then wscript.quit 如果发生错误,则退出 with fso.opentextfile(filename&"_out.vbs",2,true) 将转换好的写到一个新的vbs中 if err.number<>0 then wscript.quit 如果发生错误,则退出 .writeline "Execute(Hextostr("""&str2hex(data)&"""))" 执行解密并执行解密后的代码 .writeline "Function hextostr(data)" .writeline "Hextostr=""Execute""""""""""" .writeline "C=""&CHR(&H""" .writeline "N= "")""" .writeline "Do while Len(data)>1" .writeline "if IsNumeric (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 "end if" .writeline "loop" .writeline "end function" 把解密函数写进去 .close 关闭文本 end with set fso=Nothing注销fso组件 msgbox "OK" 以下是加密函数 Function str2hex (Byval strHex) For i=1 to Len(strHex) sHex = sHex & Hex(Asc(mid(strHex,i,1))) next str2Hex = sHex end function |