四、注册点
共享软件内部注册码产生后,需要对抗盗版的注册点的多少取决于共享软件的自身价值、开发者的加密深度和软件实现的复杂程度等诸多因素,同时这也决定了注册提示信息的显示频度,来套磁用户进行合法使用。但就笔者自身而言,至少应该将共享软件中实现难度较大、深受用户欢迎以及普遍使用的功能加上注册点。建议不同平台之间的注册码要分别设计注册算法和注册码。其代码示例如下:
代码: 注册点一:
| if(lpImeL->UseNum>=0x3f80){ if(ImeCmpKey()==~0){ sImeG.ZcFlag=TRUE; } else { sImeG.ZcFlag=FALSE; lpImeL->UseNum=0x0; } } else lpImeL->UseNum+=sImeG.iWord; 注册点二: if(ImeCmpKey()==~0){ sImeG.ZcFlag=TRUE; return; } else { sImeG.ZcFlag=FALSE; lpImeL->UseNum=0x0; } |
五、注册口
对于共享软件,不管其实现何种功能,最好采取再线注册方式,这样可以减少用户很多重复操作。同时应该采取多个注册入口,如本人软件可以在增加或删除词组等时进行注册,只要一处注册成功整个软件就算注册成功,并注意对注册口输入的注册码进行再加密处理。
笔者共享软件中注册口代码示例代码如下:
代码:
| if(sImeG.ZcFlag==TRUE){ if((cCharCode==0x8)||(cCharCode==0x4b)){ if(sImeG.ZcCount>0){ //删除键处理 if(sImeG.ZcCount<17) sImeG.szSel[0][sImeG.ZcCount+6]=0x5f; else sImeG.szSel[0][sImeG.ZcCount+6]=0x0; sImeG.ZcCount--; sImeG.szSel[0][sImeG.ZcCount+6]=0x11; lpImeL->ZcMyOk[sImeG.ZcCount]=0x0; sImeG.iSel = 0x1; sImeG.FScrCz = TRUE; UpdateInList(); } else MessageBeep(-1); } else if (cCharCode==0xd){//回车键处理 if(sImeG.ZcCount==0x10){ sImeG.ZcFlag=FALSE; sImeG.ZcCount=0x0; sImeG.iSel = 0x0; ScrnCode(sImeG.iStart); sImeG.FScrCz = TRUE; UpdateInList(); for(i=16;i>0;i--) lpImeL->ZcMyOk[16-i]^=(unsigned char)i; lpImeL->ZcMyOk[16]=0; for(i=0;i<16;i++){ if(sImeG.ImeKey[i]!=lpImeL->ZcMyOk[i]) break; } |
相关文章:共享软件的注册加密法 (上)
|