| |
些脚本是作者用大量心血和汗水编写的,下面是一种利用小精灵加密限制用户使用的方法。
需要作者授权才能单机使用,拷贝到别的电脑无法运行。
注册步骤是发给用户编译后的小精灵文件,用户运行生成注册码文件,发给作者者,作者根据注册码文件(Script目录),生成仅能在此用户电脑上运行的小精灵文件。
加密思路:利用用户C盘硬盘序列号的唯一性与一些随机码混合。
下面是脚本代码
VBS Dim fso,dr,sn,snt,i,regstring,file,temp,vaid,serialnumber
VBS Set fso=CreateObject("Scripting.FileSystemObject")
VBS serialnumber="28"&"3F"&"12"&"02"
//此处的283F1202是用户c盘序列号,分开写可以避免工具容易查找。
//每个序列号与该电脑对应,根据用户发来的注册文件提取,修改该句得到只能在该
//电脑运行的脚本,编译为小精灵即可
Rem checkreginfo
Gosub checkreg
If vaid=0
Goto outdoor
EndIf
Rem mainscript
//此处放置需要加密的脚本
Rem outdoor
EndScript
Sub checkreg
If fso.FileExists(".\reginfo.tdt")=0
VBS vaid=0
Gosub creatregtxt
VBSCall Call MessageBox("Invaid Register information ,reginfo file created!")
Goto checkover
EndIf
VBS Set file=fso.OpenTextFile(".\reginfo.tdt",1)
VBS regstring=file.ReadLine
VBS file.Close
VBS i=1
VBS sn=""
While i<=8
VBS sn=sn&Mid(regstring,5*i,1)
VBS i=i+1
EndWhile
VBS sn=Clng("&H"&sn)
VBS snt=Clng("&H"&serialnumber)
If snt=sn
VBS vaid=1
VBSCall Call MessageBox("Vaid User!")
Else
VBS vaid=0
Gosub creatregtxt
VBSCall Call MessageBox("Invaid Register information ,reginfo file created!")
EndIf
Rem checkover
Return checkreg
EndScript
Sub creatregtxt
VBS Set file=fso.OpenTextFile(".\reginfo.tdt",2,True)
VBS Set dr=fso.GetDrive("c:")
VBS sn=Hex(dr.SerialNumber)
Gosub rand
VBS regstring=temp
VBS i=1
While i<=8
VBS regstring=regstring&Mid(sn,i,1)
Gosub rand
VBS regstring=regstring&temp
VBS i=i+1
EndWhile
VBSCall Call MessageBox(regstring&" count:"&Len(regstring))
VBS file.WriteLine(regstring)
VBS file.Close
Return creatregtxt
Sub rand
Randomize
VBS temp=Int((65535 -4096+1)*Rnd+4096)
VBS temp=Hex(temp)
Return rand
序列号提取脚本
从脚本目录下的文件reginfo.tdt中提取序列号写入文件serial.tdt,用记事本打开次文件,把内容粘贴替换到上面主文件第3行,编译成小精灵即可生成只能在生成注册码的电脑上运行的文件。
VBS Dim fso,dr,sn,i,regstring,file,serialnumber
VBS Set fso=CreateObject("Scripting.FileSystemObject")
Rem checkreginfo
If fso.FileExists(".\reginfo.tdt")=0
VBSCall Call MessageBox("No vaid regisiter file!")
Goto checkover
EndIf
VBS Set file=fso.OpenTextFile(".\reginfo.tdt",1)
VBS regstring=file.ReadLine
VBS file.Close
VBS i=1
VBS sn=""
While i<=8
VBS sn=sn&Mid(regstring,5*i,1)
VBS i=i+1
EndWhile
VBS regstring=sn
VBS i=3
VBS sn=""""&Mid(regstring,1,2)&""""
While i<=8
VBS sn=sn&"&"&""""&Mid(regstring,i,2)&""""
VBS i=i+2
EndWhile
VBS Set file=fso.OpenTextFile(".\serial.tdt",2,True)
VBS file.WriteLine("serialnumber="&sn)
VBS file.Close
Rem checkover
EndScript
|
|