选准注册源、经常变动注册算法、加密注册码、管理好注册机防止外流、采用在线式的注册方法
其实,如果程序运行速度的要求不高的话,嘿嘿,我的做法是在代码里到处插入验证是否注册过的检验代码,而且不要用调用函数的形式,注册码明文肯定是不可以有的,可以采用判断完了不进行判断跳转,而是在程序里其他地方要用的某个变量的不可能用到的一个比特上 做个标记,嘿嘿,在别处一个不起眼的地方做判断
还有个方法,监测到已经被破解之后当时不采取措施,悄悄的把某些窗体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);
}

浙公网安备 33010602011771号