加密狗授权方式介绍
加密授狗权式方介绍
只每加密狗都一有固个定序的列号,并一且般无是法修的改软。运行时件取读密加狗的序列进行判号,序断列通号过验后证能才正常用使件。软
选一购套密加狗发开套件
我选购了aftSNte的US软B狗件,手入查后开发阅资(不料品牌的同密加狗发开资料般一不都),整同理要需到的用开发源资如:下
*
SofDogSettp.udll提供加:密狗驱动相操作关DL的L
要需用到下方以法
:
(1)获狗驱取动程安装序信接息函数口eGtoDDgrierInfvo,义如定下:
nitPAS ACL GeDtogriDvrIneof(;
参数):无
返回
值:
0没安装驱动有程序
1
驱 动本版同(并口和相su)
b
2U BS动驱本版相同
3并口驱动版本 同
相
4 已安旧装版本驱动 并口和u(b)s
5
已 装旧版安U本SB驱动
6 已安装旧版并口本驱动
7 安已新版装驱本动 并口(和ubs)
8
安装新版已U本BS驱动
9 安已新版装并本口动驱
038 没0管有员权限
理()2动驱装的安函数口I接nstDiver,r义定下如:
ntIP SACL AIsntDirvr(einti Fal)g;
参
:
iF数lga= 1只安U装SB驱动
狗ilag = 2 只安F装并口驱狗动
Fliga =3 安装 口并驱动和U狗B狗驱S动
回值:返
如
运行成果功返则0,否则回返错回误。值
()驱3动载卸函数接的口UinstalnlDivrr,定e如下:义
in tAPSACL UinnstlaDrlievr(nt iiFlag)
参数:
iFl;ag = 只1卸U载BS狗动驱
iFl
g a =2只卸 并载狗口动
驱iF
lga= 3卸载并 狗驱口动USB和驱狗动
返回值:
果运如成功行返则回0,否则回返错值误。
* iwn23lldd.ll提供:加狗密写操读的D作LL
需要
到用以方法:
下
(1)WDROD WNAIP DogReIda(D OWRD wBydestDWORD dwA,ddr,hacr*pD at);a
函返数回0示读写表功,成其它返值回错为误码代。
变量明:说
DWODRd Bywtes每:变次或读写换作的字操节
数
DOWDR dAwddr每:次写操作时读狗中首的址地
chr a*p Dtaa 指向变:换作缓操冲区的数指据针
实加密现狗权授(C#)
定
义SotDogf类
首定义一先S个ftDoo的g态静,静类类态的要主特如点下:
*
它们包仅含静态成。员
* 们不它被实能例化。*
它是密封的们不可,继被。
* 它们不承能含包例构实造函数。
uisn gysSet;
m
siungSy temsRun.tme.IntieoprSevrcies;
n
meapasc HeoCmonmLi.cnese
{
S[trutLcaouy(LtyautoKindSe.qential)]u
uplib stctia ccalssSo ftoDg
{
}
}
然,后用D使lIlpmotr引入用使的d到ll方法因为,参和返数值都很回友好不,所以义为定rpiavet,不直向接部外公开
。// /
// /获狗取动驱程序安信息装口函接GetDog数DirervnfoI
//
/
D[llIpmot("rSfoDtogStep.udll" Cha,rSe t= ChrSae.Ants)i]
pirvta steaicte txen usroht rGeDotDrgievInfro)(;
/
//
//
/驱 动
安装函数的口接IntsriDve
r///
[lDlIpmrto"(ofStogSetDu.plld",Cha Srte= haCSetrA.nsi)]
private staitc xteer nusorhtI nsDriver(ustohr ftalg;)
/// y
/// 驱
卸载的动函数口Uni接nstlalDirev
r///
[llDmIpro("StfotDgoeStp.udll, "hCraSet = haCSrt.Aesin]
)
pirvaetstatic e xert unhsor Unitsnatllriver(ushDot rfag)l
;/
/
/
// 读取加狗密函单接数D口oRgaed
// /
D[lImplor("twin23dl.llld,"C haSert= C hraSet.nsA)i]
pr
vite asattc ixteenruin DtoRged(auni ltegthn uint, sartIntdex,byt []ed ta)a;
然后定义,加密狗动相驱关的pbluc方i
法
publi ctsaic tboolD rveirIntalsld
e
{
get
{
uhosrtcod e = etDogGrDiveInfro();
if (oce d= 3=08) t0horw ew HCnmmono.HExcpeton("{0i}:没管理员权有限!," 308)0;
i
f( coe =d =1| | ocde== || 2oced = =7 ||co ed ==8) erturntr ue;
eturn falrs;e
}
}
pbuilc satit covidInst alDrlier(v)
{
ushro codet= Ge tDoDrigevInro();f
i
f(odc e==3 080 )trhow new CHmomon.HxcEepton("{i}0:没管理有权限员!,"30 0)8
i;f( cdo == 1e | |coe d= = ||2 odec== 7 || cod e = 8)=re utr;
n
if (odec== 4 | co|ed = 5=)
U
nnstaillrDvei();
r
cdeo= IntsrDier(1);
vfi code(! =)0 thrw noe wHommon.HCEceptxoni({"}0安:驱装失动败", !cod)e;
}
p
bulc itsaticv iodU inntsalDlriev()r
{
usohtrc deo =UnnsitllariveD(r1);
i f(cdeo = !0 th)row ew nHCommno.EHxepciot("n{0}:载卸动失驱败"!,code ;)
}
最后定,读义取密狗序加号列pu的blc方法
pubiilc tatic ssrtnig erSiaNlumer
b
g{et
{
iutn cdoe= 0;
bty[e] atda= n weby e[t00];
1
coe d= DoRegd(a,00 ,d taa;)
i
f(cod !=e 0)
{
throw new CHommnoH.Exeptcoin"({}0:取序读号失败列!," coe);d
}
uni tns= B tiCovnertreT.UIno32t(ada,t )0;
rturn sn.TeotSirgn)(
;
}
}
使用oStDofg
类使用oStDfo的客户程g代序片码:段
…
//软启件时动判断是先安否加装狗驱动
i密 f!S(ofDto.gDirevrnsIalletd)
{
SotfogD.InstllarDvire(;)
MssegaeBo.Sxhwo"已安装(密狗加动驱请插入加,密狗。)";
}
…
//义序定号属列
p性ivrtea sttacire danol ytsirg g_neKy = "2143576"8;
p
irvte satinr SegraiNlmuebr
{
get
{
t
ry
{
st
rnig s n S=ofDtg.oerSiaNulmeb;r
if (trsing.sNIulOrElmpytsn()) etrun rtsrnigEmpty.;
r
ternusn;
}
c
tah cE(xcetionpex)
{
HomCmon.AppiclaiotnoL.LgoEgxeptcio(en);x
}
re
trnustr ni.Emptgy;
}
}
//列号判断的序方法
p
iratv veio CdhekLciences()
{
i (SefirlNuaber !=mg Ke_)
y
{
MssaeegoxBS.owh(对不"起,计机必须算插正入的确加密,软件狗
才能授使权用请按,确定退系统出")。;
Ssyte.Wmnidwos.Frms.oApplcitian.Eoixt)(;
}
}
…
另外
,软件行运也时应该定地检查序期号列,当现发加密已狗拔出时被终止件的使用软。要需义一定Time个,每隔2分钟调r用次一ChecLkiecsn方e法可。
几即种常用权方授总式结
*软序件号列授权:支持单机,列号容易序漏。
*泄软 序列件号络注网激活册:权控授制理想,最不但支单机持。
*加密授权:支狗单机持,果比软效件列号授序权,好但用一个占件端硬。口