标题: 闲来无事发个VBS 16进制验证特定字符
[打印本页]
作者: fastslz
时间: 2007-12-6 16:00
标题: 闲来无事发个VBS 16进制验证特定字符
例子验证VBS自身(红色部分)
Quote: |
'验证字符:fastslz
file=Wscript.ScriptFullName
Dim slz
set slz = CreateObject("Adodb.Stream")
slz.Type = 1
slz.Mode = 3
slz.Open
slz.Position = 0
slz.Loadfromfile file
Bin=slz.read(18)
if AscB(MidB(Bin,12,1))=&H66 and AscB(MidB(Bin,13,1))=&H61 and AscB(MidB(Bin,14,1))=&H73 and AscB(MidB(Bin,15,1))=&H74 and AscB(MidB(Bin,16,1))=&H73 and AscB(MidB(Bin,17,1))=&H6C and AscB(MidB(Bin,18,1))=&H7A Then
WScript.echo "通过验证"
else
WScript.echo "非法修改"
end if |
|
作者: z640919a
时间: 2007-12-6 16:08
要学的东西太多,LZ 能否解释Bin后面几句.
作者: bxdonne
时间: 2007-12-6 16:36
好东西,但不知道干什么用的 :(
楼主可以解释一下吗?
作者: fastslz
时间: 2007-12-6 18:37
本来写这个是分析文件类型的,都是数字函数太晕了.数学不好写不下去
Asc、AscB、AscW 是 VBScript 中的三个函数,其区别如下。Asc(string) 返回与字符串的第一个字母对应的 ANSI 字符代码。AscB 不是返回第一个字符的字符代码,而是返回首字节。它返回 Unicode (宽型)字符代码,因此可以避免从 ANSI 到 Unicode 的代码转换。
MidB类似只是返回的是16进制代码
Quote: |
Originally posted by bxdonne at 2007-12-6 16:36:
好东西,但不知道干什么用的 :(
楼主可以解释一下吗? |
|
更改红色部分文字就显示非法修改了。
如果是WScript.Arguments对象则分析某文件某位置是否被修改
作者: 81291895
时间: 2007-12-6 21:40
验证“'验证字符:fastslz”这一行从第12个字符到第18个字符有没有被修改
作者: bxdonne
时间: 2007-12-7 12:32
1、如果是WScript.Arguments对象则分析某文件某位置是否被修改
这个能不能给个例子?
2、我想问下是不是可以写一个完全保护自身的脚本?(只要修改某处就能提示"非法修改")
望楼主能写一个出来,谢谢!
作者: fastslz
时间: 2007-12-7 13:21
Quote: |
Originally posted by bxdonne at 2007-12-7 12:32:
1、如果是WScript.Arguments对象则分析某文件某位置是否被修改
这个能不能给个例子?
2、我想问下是不是可以写一个完全保护自身的脚本?(只要修改某处就能提示"非法修改")
望楼主能写一个出来,谢谢! |
|
1楼代码就是,只是分析字符串集中在12~18之间,代码中
&H66 &H61 &H73 &H74 &H73 &H6C &H7A就是
fastslz十六进制值,(Bin,
14,1))14表示字符串开始位置,如果分析字符串分布在整个代码各不同处,外加些垃圾运算代码就实现保护自身的脚本不能被修改了,自己灵活应用,如果不太了解VBS和奉劝免伤这脑细胞了
WScript.Arguments是拖放文件或命令行里指定的文件,作用是保护其他文件不能被修改:)
代码本身没什么技术可言,谈到加密验证了~~~就~~~~~~~~~~~~~
作者: bxdonne
时间: 2007-12-7 13:36
谢谢你的回答:)