怎么检测人家复制我的程序或文件,是否被复制.或者直接不给人家复制..请高手帮忙.

解决方案 »

  1.   

    Windows都被COPY了,真能解决这问题MS请你当首席反盗版总监。
      

  2.   

    为什么要这么做,不如 让程序copy在其他目录无法运行,达到殊途同归的效果
      

  3.   

    我们是做整机出售呀.防止被COPY.请高人指点
      

  4.   

    绑定硬件id,对该id进行单向散列(比如md5).
    取散列值对某块关键代码加密,运行时动态解密.
    加密解密的代码套上VMP,想破就破吧,破的代价远高于软件本身的代价.
      

  5.   

    检测电脑的硬件信息(如cpu,硬盘,主板,网卡等等。。),把你电脑的这些信息都写进程序,运行时判断这些硬件信息是否一致,不一致自动退出或引导到一个有破坏性的程序或木马程序
      

  6.   

    把PE文件转换成16进制数组字符串,再把数组打乱,保存为文本,算法用脑子记住
    用的时候进行相反的操作,启动的时候自删除操作,不保留PE文件在硬盘,还有用的时候要把网络拔掉,防止别人木马从内存拷贝文件
      

  7.   


    //获取芯片公司及芯片序列号
    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的序列号是唯一的.如果型号一样.这个号是一至的.哪就完了.
      

  8.   

    大家所说的加壳,就是用加密DOG 吧..加密EXE文件吧..现在破的人太多了,不可靠..
      

  9.   

    自己做硬件 防止一般的复制企图还是机会很大的 
    总而言之就是一条:不用开放标准的技术 比如文件系统\操作系统\API 都自己搞一套 或者拿标准的改成不兼容的 能不给的东西尽量不给 比如不给访问你们硬件功能的API、调试功能之类
    整个磁盘都加密 在自己操作系统中首先解密了才能用 另外不要支持外设存储,只允许用你们自身的硬件包括上面说的可以绑定硬件标识 等等