橋牌軟體Deep Finesse的序號產生器 (1千字)

看雪資料發表於2015-11-15

1.Deep Finesse 1.6 [雙明手問題分析程式]

      http://www.deepfinesse.com/releases/DF-Installer-26-Nov-99.exe[526K]

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main(void)
{
    char          SerialString[16];
    char          UnlockString[16];
    unsigned long Serial, Unlock;
    int          k;

    printf("Enter your serial number(xxx-xxx-xxx): ");
    gets(SerialString);

    if ((strlen(SerialString) != 11) || (SerialString[3] != '-') || (SerialString[7] != '-'))
    {
        printf("Wrong serial number.\n");
        return;
    }

    for(k = 3; k <= 5; k++)
    {
        SerialString[k] = SerialString[k+1];
    }

    for(k = 6; k <= 8; k++)
    {
        SerialString[k] = SerialString[k+2];
    }

    SerialString[9] = '\0';
    Serial = atol(SerialString);

    __asm
    {
            MOV      EAX,[Serial]
            XOR      EDX,EDX
            IMUL      EAX,EAX,0x0004535FL
            ADD      EAX,0x466F9629L
            MOV      ECX,0x3B9ACA00L
            DIV      ECX
            CMP      EDX,0x05F5E100L
            JAE      _next_
            ADD      EDX,0x05F5E100L
        _next_:
            MOV      [Unlock], EDX
    }

    sprintf(UnlockString, "%09lu", Unlock);
    printf("Your unlock code is: ");
    for(k = 0; k <= 2; k++)
    {
        putchar(UnlockString[k]);
    }
    putchar('-');
    for(k = 3; k <= 5; k++)
    {
        putchar(UnlockString[k]);
    }
    putchar('-');
    for(k = 6; k <= 8; k++)
    {
        putchar(UnlockString[k]);
    }
    putchar('\n');
}

相關文章