389 views
首页 > 技术心得 > IncrediBuild 试用时间推迟的算法

IncrediBuild 试用时间推迟的算法

2009年8月11日

IncrediBuild 试用时间推迟的算法

/*
    IncrediBuild 

    不同版本保存过期时间的注册表键的位置是不同的:
    2.40: HKCR\Interface\{E9B0227F-437C-4F7A-86D9-2676B83F359F}\ProxyStubClsid32 = {M1-M2-M3-T1-T2}
    3.20: HKCR\Interface\{B7348B5D-B65D-4BF5-AF63-A3135249ACA7}\ProxyStubClsid32 = {M1-M2-M3-T1-T2}
    3.31: HKCR\Interface\{6F8793A7-3226-4B51-98C1-476A0D1A7AFC}\ProxyStubClsid32
    3.40: HKCR\Interface\{48C6296A-4F4C-4238-A9E1-60E9A544A863}\ProxyStubClsid32
    3.50: HKCR\Interface\{CF069F44-2B45-4AFE-A50E-DF8BF2DF8DCE}\ProxyStubClsid32

    假设此时 Date 的值是 39598.999988425923 (0x37BA E7FFDF55E340)

    T1 = 37BA
    T2 = E7FFDF55E340
    M1 = 37 * BA * E7 * FF = 23EAEB06
    M2 = DF * 55 = 4A0B
    M3 = E3 * 40 = 38C0

    这样我们就可以把注册表中上述键值改为:{23EAEB06-4A0B-38C0-37BA-E7FFDF55E340}
//*/

EXTERN_C void GetIncrediBuildLicKey(DATE date, LPTSTR lpszKey, UINT cchMax)
{
    BYTE * pByte = (BYTE *)&date;

    BYTE * T1 = (BYTE *) (pByte);
    BYTE * T2 = (BYTE *) (pByte + 2);

    DWORD dwM1 = (DWORD) *pByte;
    dwM1 *= (DWORD) *(pByte + 1);
    dwM1 *= (DWORD) *(pByte + 2);
    dwM1 *= (DWORD) *(pByte + 3);

    WORD wM2 = (WORD) *(pByte + 4);
    wM2 *= (WORD) *(pByte + 5);

    WORD wM3 = (WORD) *(pByte + 6);
    wM3 *= (WORD) *(pByte + 7);

    TCHAR szOut[MAX_PATH] = { 0 };

    wsprintf(szOut, _T("{%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X}"),
        dwM1,
        wM2,
        wM3,
        *T1, *(T1+1),
        *T2, *(T2+1), *(T2+2), *(T2+3), *(T2+4), *(T2+5)
        );
    lstrcpyn(lpszKey, szOut, cchMax);
}

以上代码调用方法:

void CCrackibDlg::OnButton1()
{
    COleDateTime destTime = COleDateTime::GetCurrentTime();

    COleDateTime dateTime(destTime.GetYear(), destTime.GetMonth()+1, destTime.GetDay()-1, 23, 59, 59);
    DATE Date = (DATE)dateTime;

    TCHAR szOut[MAX_PATH] = { 0 };
    GetIncrediBuildLicKey((DATE)Date, szOut, MAX_PATH);

    SetDlgItemText(IDC_EDIT1, szOut);
}

源代码: crackib

free2000fly 技术心得

  1. 目前还没有任何评论.
  1. 目前还没有任何 trackbacks 和 pingbacks.