⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdr38key.asm

📁 破解很多程序的序列号算法程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
    cmp Got_Fixed, 1
    jne no_fixing
    
; == fix dat and save back
    push 0
    push 03f4h
    push offset DatFileBuffer+0ch
    push offset Checksum_Table_3
    call Checksum_32Bit_Routine
    add esp, 10h
    mov dword ptr DatFileBuffer+08h, eax
    mov ecx, SIZEOFDAT
    xor eax, eax
    lea edx, DatFileBuffer
Encrypt_Dat:
    mov bl, byte ptr [eax+edx]
    add bl, al
    mov [eax+edx], bl
    inc eax
    loop Encrypt_Dat    
    invoke CreateFile, ofn.lpstrFile,
                       GENERIC_WRITE,
                       0, NULL,
                       OPEN_EXISTING,
                       FILE_ATTRIBUTE_NORMAL,
                       NULL
    push eax
    invoke WriteFile, eax, addr DatFileBuffer, SIZEOFDAT, addr lpNumberOfBytesRead,NULL
    pop eax
    invoke CloseHandle, eax
    mov ecx, SIZEOFDAT
    xor eax, eax
    lea edx, DatFileBuffer
@Fix:
    mov bl, byte ptr [eax+edx]
    sub bl, al
    mov [eax+edx], bl
    inc eax
    loop @Fix    

    mov Got_Fixed, 0

no_fixing:
; == fetch Name and Company
    invoke SetDlgItemText, hWnd, IDC_NAME, addr DatFileBuffer+460
    invoke SetDlgItemText, hWnd, IDC_EMAIL, addr DatFileBuffer+524

; == display expiration range 
    mov eax, dword ptr DatFileBuffer+832
    mov esi, dword ptr DatFileBuffer+828
    shr esi, 010h
    xor esi, eax
    and esi, 0ffffh
    add esi, Base_Year*12-Base_Counter+Base_Month
    mov eax, esi
    mov ecx, 12
    xor edx, edx
    div ecx
    or edx, edx
    jne not_end_of_da_year
    dec eax
    invoke SetDlgItemInt, hWnd, IDC_YEARSTART, eax, FALSE    
    invoke SetDlgItemInt, hWnd, IDC_MONTHSTART, 12, FALSE
    jmp finish_fetch_date 
not_end_of_da_year:
    mov edi, edx
    invoke SetDlgItemInt, hWnd, IDC_YEARSTART, eax, FALSE    
    invoke SetDlgItemInt, hWnd, IDC_MONTHSTART, edi, FALSE
finish_fetch_date:    

; == fetch Unlock Key and generate Check Key
    lea ebx, License_Part_4
    lea ecx, DatFileBuffer+828
    mov eax, [ecx]
    mov [ebx], eax
    mov eax, [ecx+4]
    mov [ebx-4], eax
    mov eax, [ecx+8]
    mov [ebx-8], eax
    mov eax, [ecx+12]
    mov [ebx-12], eax

    mov esi, offset [License_Part_1]
    mov ecx, offset [Check_Part_1]
    mov edi, [esi]
    mov eax, [esi+4]
    mov edx, edi
    xor edx, eax
    mov [ecx+4], edx
    mov edx, [esi+8]
    mov ebx, edx
    xor ebx, eax
    mov [ecx+8], ebx
    mov eax, [esi+0Ch]
    mov ebx, eax
    xor ebx, edx
    mov [ecx+0Ch], ebx
    xor eax, edi
    mov [ecx], eax

; == display code (must be at the end, otherwise overwrite through EN_CHANGE)
    xor edi, edi
    mov esi, offset [License_Part_1]
display_codes_again:
    push dword ptr [esi+0Ch]
    push dword ptr [esi+8]
    push dword ptr [esi+4]
    push dword ptr [esi]
    push offset lpCode
    push offset BigBuffer
    call dword ptr [wsprintfa]
    add esp, 6*4
    or edi, edi
    jne display_codes_2_again
    invoke SetDlgItemText, hWnd, IDC_UNLOCKKEY, addr BigBuffer
    inc edi
    mov esi, offset [Check_Part_1]
    jmp display_codes_again
display_codes_2_again:
    invoke SetDlgItemText, hWnd, IDC_CHECKKEY, addr BigBuffer


end_dat:
    popa
    ret
dat_routine endp

; == The following routines are directly ripped from CDRWin

Checksum_1 proc near
arg_0 = dword ptr  4
arg_4 = dword ptr  8
    mov eax, [esp+arg_4]
    push esi
    dec eax
    jz short loc_0_4203A6
    dec eax
    jz short loc_0_42039F
    xor eax, eax
    pop esi
    retn
loc_0_42039F:
    mov esi, offset Checksum_Table_1
    jmp short loc_0_4203AB
loc_0_4203A6:
    mov esi, offset Checksum_Table_2
loc_0_4203AB:
    mov edx, [esp+4+arg_0]
    push edi
    mov edi, edx
    or ecx, 0FFFFFFFFh
    xor eax, eax
    push 0
    repne scasb
    not ecx
    dec ecx
    push ecx
    push edx
    push esi
    call Checksum_32Bit_Routine
    add esp, 10h
    pop edi
    pop esi
    retn
Checksum_1 endp

Checksum_32Bit_Routine proc near
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
arg_C = dword ptr 10h
    mov eax, [esp+arg_C]
    mov edx, [esp+arg_4]
    push edi
    mov edi, [esp+4+arg_8]
    test di, di
    jz short loc_0_43FDB0
    push ebx
    push ebp
    push esi
    mov esi, [esp+10h+arg_0]
    and edi, 0FFFFh
loc_0_43FD7F:
    xor ecx, ecx
    mov ebp, eax
    mov cl, [edx]
    inc edx
    mov ebx, ecx
    xor ebx, eax
    and ebx, 0Fh
    shr ebp, 4
    mov eax, [esi+ebx*4]
    xor eax, ebp
    shr ecx, 4
    mov ebx, eax
    and ecx, 0Fh
    and ebx, 0Fh
    xor ecx, ebx
    shr eax, 4
    mov ecx, [esi+ecx*4]
    xor eax, ecx
    dec edi
    jnz short loc_0_43FD7F
    pop esi
    pop ebp
    pop ebx
loc_0_43FDB0:
    pop edi
    retn
Checksum_32Bit_Routine endp

; ripped from CDRWin V3.8A 12/27/99, still up-to-date with DAO V3.8B July
CDRWin_Blacklisted_Routine proc near
var_250 = dword ptr -250h
var_24C = dword ptr -24Ch
var_248 = dword ptr -248h
var_244 = dword ptr -244h
var_240 = dword ptr -240h
var_23C = dword ptr -23Ch
var_238 = dword ptr -238h
var_234 = dword ptr -234h
var_230 = dword ptr -230h
var_22C = dword ptr -22Ch
var_228 = dword ptr -228h
var_224 = dword ptr -224h
var_220 = dword ptr -220h
var_21C = dword ptr -21Ch
var_218 = dword ptr -218h
var_214 = dword ptr -214h
var_210 = dword ptr -210h
var_20C = dword ptr -20Ch
var_208 = dword ptr -208h
var_204 = dword ptr -204h
var_200 = dword ptr -200h
var_1FC = dword ptr -1FCh
var_1F8 = dword ptr -1F8h
var_1F4 = dword ptr -1F4h
var_1F0 = dword ptr -1F0h
var_1EC = dword ptr -1ECh
var_1E8 = dword ptr -1E8h
var_1E4 = dword ptr -1E4h
var_1E0 = dword ptr -1E0h
var_1DC = dword ptr -1DCh
var_1D8 = dword ptr -1D8h
var_1D4 = dword ptr -1D4h
var_1D0 = dword ptr -1D0h
var_1CC = dword ptr -1CCh
var_1C8 = dword ptr -1C8h
var_1C4 = dword ptr -1C4h
var_1C0 = dword ptr -1C0h
var_1BC = dword ptr -1BCh
var_1B8 = dword ptr -1B8h
var_1B4 = dword ptr -1B4h
var_1B0 = dword ptr -1B0h
var_1AC = dword ptr -1ACh
var_1A8 = dword ptr -1A8h
var_1A4 = dword ptr -1A4h
var_1A0 = dword ptr -1A0h
var_19C = dword ptr -19Ch
var_198 = dword ptr -198h
var_194 = dword ptr -194h
var_190 = dword ptr -190h
var_18C = dword ptr -18Ch
var_188 = dword ptr -188h
var_184 = dword ptr -184h
var_180 = dword ptr -180h
var_17C = dword ptr -17Ch
var_178 = dword ptr -178h
var_174 = dword ptr -174h
var_170 = dword ptr -170h
var_16C = dword ptr -16Ch
var_168 = dword ptr -168h
var_164 = dword ptr -164h
var_160 = dword ptr -160h
var_15C = dword ptr -15Ch
var_158 = dword ptr -158h
var_154 = dword ptr -154h
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_144 = dword ptr -144h
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_100 = dword ptr -100h
var_FC = dword ptr -0FCh
var_F8 = dword ptr -0F8h
var_F4 = dword ptr -0F4h
var_F0 = dword ptr -0F0h
var_EC = dword ptr -0ECh
var_E8 = dword ptr -0E8h
var_E4 = dword ptr -0E4h
var_E0 = dword ptr -0E0h
var_DC = dword ptr -0DCh
var_D8 = dword ptr -0D8h
var_D4 = dword ptr -0D4h
var_D0 = dword ptr -0D0h
var_CC = dword ptr -0CCh
var_C8 = dword ptr -0C8h
var_C4 = dword ptr -0C4h
var_C0 = dword ptr -0C0h
var_BC = dword ptr -0BCh
var_B8 = dword ptr -0B8h
var_B4 = dword ptr -0B4h
var_B0 = dword ptr -0B0h
var_AC = dword ptr -0ACh
var_A8 = dword ptr -0A8h
var_A4 = dword ptr -0A4h
var_A0 = dword ptr -0A0h
var_9C = dword ptr -9Ch
var_98 = dword ptr -98h
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_8C = dword ptr -8Ch
var_88 = dword ptr -88h
var_84 = dword ptr -84h
var_80 = dword ptr -80h
var_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_74 = dword ptr -74h
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr  4
    sub esp, 250h
    push ebx
    mov ecx, 8574D6DAh
    mov eax, 52FAEF70h
    push esi
    push edi
    mov [esp+25Ch+var_248], 0A7ECB4BCh
    mov [esp+25Ch+var_244], 4F53C64Ch
    mov [esp+25Ch+var_240], 40BB4C25h
    mov [esp+25Ch+var_23C], 15B85CC9h
    mov [esp+25Ch+var_238], 60CF10ADh
    mov [esp+25Ch+var_234], 0C40DF385h
    mov [esp+25Ch+var_230], 3FBF9B41h
    mov [esp+25Ch+var_22C], 0C74BB7D7h
    mov [esp+25Ch+var_228], 0C1E43D51h
    mov [esp+25Ch+var_224], 345B3B7Eh
    mov [esp+25Ch+var_220], 717CDBC6h
    mov [esp+25Ch+var_21C], 4CF3D66Eh
    mov [esp+25Ch+var_218], 0FD1A3279h
    mov [esp+25Ch+var_214], 68D236F3h
    mov [esp+25Ch+var_210], 7D4BE720h
    mov [esp+25Ch+var_20C], 9C309CC1h
    mov [esp+25Ch+var_208], 659E52F8h
    mov [esp+25Ch+var_204], 0B42FED5Eh
    mov [esp+25Ch+var_200], 0E21BADD5h
    mov [esp+25Ch+var_1FC], 3E89D2B9h
    mov [esp+25Ch+var_1F8], 6D712456h
    mov [esp+25Ch+var_1F4], 0E1CF582Bh
    mov [esp+25Ch+var_1F0], 2B46EDEDh
    mov [esp+25Ch+var_1EC], 3285CC23h
    mov [esp+25Ch+var_1E8], 0F4465C0Eh
    mov [esp+25Ch+var_1E4], 31B3668Eh
    mov [esp+25Ch+var_1E0], 43799AFAh
    mov [esp+25Ch+var_1DC], 0F74F1CC8h
    mov [esp+25Ch+var_1D8], 0A194ED65h
    mov [esp+25Ch+var_1D4], 85468981h
    mov [esp+25Ch+var_1D0], 0DFFCA902h
    mov [esp+25Ch+var_1CC], 275590D1h
    mov [esp+25Ch+var_1C8], 37645E8Ah
    mov [esp+25Ch+var_1C4], 0D3AACB15h
    mov [esp+25Ch+var_1C0], 8672DEDBh
    mov [esp+25Ch+var_1BC], 0BD973BE0h
    mov [esp+25Ch+var_1B8], 278A0A4h
    mov [esp+25Ch+var_1B4], 0E911813Eh
    mov [esp+25Ch+var_1B0], 65DBAA75h
    mov [esp+25Ch+var_1AC], 49C93F5Eh
    mov [esp+25Ch+var_1A8], 784FFB86h
    mov [esp+25Ch+var_1A4], 0BE3D7B75h
    mov [esp+25Ch+var_1A0], ecx
    mov [esp+25Ch+var_19C], eax
    mov [esp+25Ch+var_198], 0FF695CF2h
    mov [esp+25Ch+var_194], 5425BDFCh
    mov [esp+25Ch+var_190], 0C964FD3Fh
    mov [esp+25Ch+var_18C], 0C3C307EFh
    mov [esp+25Ch+var_188], 99D948C7h
    mov [esp+25Ch+var_184], 0E65323AAh
    mov [esp+25Ch+var_180], 773F84B8h
    mov [esp+25Ch+var_17C], 0A79DF75Fh
    mov [esp+25Ch+var_178], 712A0DC8h
    mov [esp+25Ch+var_174], 0D84B09C1h
    mov [esp+25Ch+var_170], 0F7152AD8h
    mov [esp+25Ch+var_16C], 5F9355FEh
    mov [esp+25Ch+var_168], 0CF9B73B0h
    mov [esp+25Ch+var_164], 5EC34700h
    mov [esp+25Ch+var_160], 95D1B737h
    mov [esp+25Ch+var_15C], 0D590AA84h
    mov [esp+25Ch+var_158], 153F6E04h
    mov [esp+25Ch+var_154], 74797D39h
    mov [esp+25Ch+var_150], 213A82D2h
    mov [esp+25Ch+var_14C], 368A30EFh
    mov [esp+25Ch+var_148], 984244BBh
    mov [esp+25Ch+var_144], 782FA2Eh
    mov [esp+25Ch+var_140], 49934854h
    mov [esp+25Ch+var_13C], 0CB3552BAh
    mov [esp+25Ch+var_138], 44C23803h
    mov [esp+25Ch+var_134], 0E4524969h
    mov [esp+25Ch+var_130], 273D5E9Ah
    mov [esp+25Ch+var_12C], 0ED700070h
    mov [esp+25Ch+var_128], 55111A62h
    mov [esp+25Ch+var_124], 7D298F42h
    mov [esp+25Ch+var_120], 4F6D9D02h
    mov [esp+25Ch+var_11C], 92C9C7AAh
    mov esi, [esp+25Ch+arg_0]
    mov [esp+25Ch+var_30], ecx
    mov [esp+25Ch+var_2C], eax

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -