lifz

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

选准注册源、经常变动注册算法、加密注册码、管理好注册机防止外流、采用在线式的注册方法

其实,如果程序运行速度的要求不高的话,嘿嘿,我的做法是在代码里到处插入验证是否注册过的检验代码,而且不要用调用函数的形式,注册码明文肯定是不可以有的,可以采用判断完了不进行判断跳转,而是在程序里其他地方要用的某个变量的不可能用到的一个比特上 做个标记,嘿嘿,在别处一个不起眼的地方做判断

还有个方法,监测到已经被破解之后当时不采取措施,悄悄的把某些窗体Free掉。这样当时看不出来问题,用一会儿就会报XXX read fail了。


1、保护你的校验算法,具体的做法就是千万别使用校验函数把你的校验算法嵌入功能代码里是比较保险的,这样破解者至少要花很多精力去研究那一部分是校验算法。当然这还不够,你还可以把检验算法分散到2个地方,当然更多地方效果会更好,只是将来代码维护起来会很麻烦的。

2、用Aspack,upx之类的压缩执行文件工具做进一步的保护。然后检查exe文件特定位置的byte是否变化,以确定软件是否被改动

3、防止暴破:千万不要用明文比较(用byte二进制比较)。再想保护深一点就加入一些冗余代码

#include "stdafx.h"

#include "string.h"
 

void getcpuid(char* CpuId);

 

int main(int argc, char* argv[])

{
         char cpuid[255];

         getcpuid(cpuid);
         printf(cpuid);printf("\n");
  
   return 0;
}

 

void getcpuid(char* CpuId)

{

         char szCPUID[129] = {NULL};

         char szTmp[33] = {NULL};

         unsigned long s1 = 0, s2 = 0;

         _asm {

                   mov eax,01h

                            xor edx,edx

                            cpuid

                            mov s1,edx

                            mov s2,eax

         }

         sprintf(szTmp, "%08X %08X ", s1, s2);

         strcpy(szCPUID, szTmp);

         _asm {

                   mov eax,03h

                            xor ecx,ecx

                            xor edx,edx

                            cpuid

                            mov s1,edx

                            mov s2,ecx

         }

         sprintf(szTmp, "%08X %08X", s1, s2);

         strcat(szCPUID, szTmp);

         strcpy(CpuId,szCPUID);
 
}

posted on 2005-09-20 10:21  lifz  阅读(288)  评论(0)    收藏  举报