怎么检测人家复制我的程序是否被复制.或者直接不给人家复制 怎么检测人家复制我的程序或文件,是否被复制.或者直接不给人家复制..请高手帮忙. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Windows都被COPY了,真能解决这问题MS请你当首席反盗版总监。 为什么要这么做,不如 让程序copy在其他目录无法运行,达到殊途同归的效果 我们是做整机出售呀.防止被COPY.请高人指点 绑定硬件id,对该id进行单向散列(比如md5).取散列值对某块关键代码加密,运行时动态解密.加密解密的代码套上VMP,想破就破吧,破的代价远高于软件本身的代价. 检测电脑的硬件信息(如cpu,硬盘,主板,网卡等等。。),把你电脑的这些信息都写进程序,运行时判断这些硬件信息是否一致,不一致自动退出或引导到一个有破坏性的程序或木马程序 把PE文件转换成16进制数组字符串,再把数组打乱,保存为文本,算法用脑子记住用的时候进行相反的操作,启动的时候自删除操作,不保留PE文件在硬盘,还有用的时候要把网络拔掉,防止别人木马从内存拷贝文件 //获取芯片公司及芯片序列号void GainProcessorSerialNumber(char *SerialNumber){ unsigned long s1,s2; unsigned char vendor_id[]="------------"; char ss[100]=""; __asm { xor eax,eax cpuid mov dword ptr vendor_id,ebx mov dword ptr vendor_id[+4],edx mov dword ptr vendor_id[+8],ecx } // printf("%s-",vendor_id);//芯片公司 _stprintf(SerialNumber,"%s-",vendor_id); __asm { mov eax,01h xor edx,edx cpuid mov s1,edx mov s2,eax } // printf("%08X\n%08X-",s1,s2);//s1:16进制编号 s2:CPU序列号第1组 _stprintf(ss,"%08X-%08X-",s1,s2); strcat(SerialNumber,ss); __asm { mov eax,03h xor ecx,ecx xor edx,edx cpuid mov s1,edx mov s2,ecx } // printf("%08X-%08X\n",s1,s2);//s1:CPU序列号第2组 s2:CPU序列号第3组 _stprintf(ss,"%08X-%08X",s1,s2); strcat(SerialNumber,ss);}刚搞出来的.送给大家,但我还没有测试过.究竟是不是每个CPU的序列号是唯一的.如果型号一样.这个号是一至的.哪就完了. 大家所说的加壳,就是用加密DOG 吧..加密EXE文件吧..现在破的人太多了,不可靠.. 自己做硬件 防止一般的复制企图还是机会很大的 总而言之就是一条:不用开放标准的技术 比如文件系统\操作系统\API 都自己搞一套 或者拿标准的改成不兼容的 能不给的东西尽量不给 比如不给访问你们硬件功能的API、调试功能之类整个磁盘都加密 在自己操作系统中首先解密了才能用 另外不要支持外设存储,只允许用你们自身的硬件包括上面说的可以绑定硬件标识 等等 如果我在VC里调用的API函数,运行环境的系统不支持会发生什么事? 属性页上点取消后如何保持页面不消失? 关于和虚拟打印机端口同名的文件 求电子书《MFC WINDOWS 程序设计》, CHM格式 ADO访问ACCESS2000数据库 连接串该怎么写? 求助:如何根据涵数名取得涵数参数信息. vc写的activex怎样得到html传递过来得参数?? 怎么样去掉继承CFormView的窗口上的滚动条 哪位windows AD是什么吗? 如果通过rtsp和mms协议下载一个音频文件?如果判断该文件是否存在? 人在广州且有VC开发经验的人进来 vc++ 从声卡中读取波形(最好高低电平形式的)
取散列值对某块关键代码加密,运行时动态解密.
加密解密的代码套上VMP,想破就破吧,破的代价远高于软件本身的代价.
用的时候进行相反的操作,启动的时候自删除操作,不保留PE文件在硬盘,还有用的时候要把网络拔掉,防止别人木马从内存拷贝文件
//获取芯片公司及芯片序列号
void GainProcessorSerialNumber(char *SerialNumber)
{
unsigned long s1,s2;
unsigned char vendor_id[]="------------";
char ss[100]="";
__asm
{
xor eax,eax
cpuid
mov dword ptr vendor_id,ebx
mov dword ptr vendor_id[+4],edx
mov dword ptr vendor_id[+8],ecx
}
// printf("%s-",vendor_id);//芯片公司
_stprintf(SerialNumber,"%s-",vendor_id);
__asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
// printf("%08X\n%08X-",s1,s2);//s1:16进制编号 s2:CPU序列号第1组
_stprintf(ss,"%08X-%08X-",s1,s2);
strcat(SerialNumber,ss);
__asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
// printf("%08X-%08X\n",s1,s2);//s1:CPU序列号第2组 s2:CPU序列号第3组
_stprintf(ss,"%08X-%08X",s1,s2);
strcat(SerialNumber,ss);
}
刚搞出来的.送给大家,但我还没有测试过.究竟是不是每个CPU的序列号是唯一的.如果型号一样.这个号是一至的.哪就完了.
总而言之就是一条:不用开放标准的技术 比如文件系统\操作系统\API 都自己搞一套 或者拿标准的改成不兼容的 能不给的东西尽量不给 比如不给访问你们硬件功能的API、调试功能之类
整个磁盘都加密 在自己操作系统中首先解密了才能用 另外不要支持外设存储,只允许用你们自身的硬件包括上面说的可以绑定硬件标识 等等