闲着无事,通这MFC来生成一个简单的注册软件,效果图如下所示

未命名

软件通过使用CPU唯一的机器码来识别, 并产生每台机器不同的序列号,防止盗版的任意的复制

核心代码是得到CPU唯一的ID机器码的代码,贴出核心代码

unsigned long s1,s2;
    unsigned char vendor_id[]="————";
    char sel;
    sel=’1′;
    CString VernderID;
    CString MyCpuID,CPUID1,CPUID2;
    switch(sel)
    {
    case ‘1’:
        __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
        }
        VernderID.Format(L"%s-",vendor_id);
        __asm{
            mov eax,01h
                xor edx,edx
                cpuid
                mov s1,edx
                mov s2,eax
        }
        CPUID1.Format(L"%08X%08X",s1,s2);
        __asm{
            mov eax,03h
                xor ecx,ecx
                xor edx,edx
                cpuid
                mov s1,edx
                mov s2,ecx
        }
        CPUID2.Format(L"%08X%08X",s1,s2);
        break;

    case ‘2’:
        {
            __asm{
                mov ecx,119h
                    rdmsr
                    or eax,00200000h
                    wrmsr
            }
        }

        AfxMessageBox(L"出现错误,请联系程序开发者");
        break;

    }
    MyCpuID = CPUID1+CPUID2;