📄 zenms7kg.asm
字号:
je next_serial cmp eax,0FFFFFFFDh je next_serial cmp eax,0FFFFFFFEh je next_serial cmp eax,0FFFFFFFFh je next_serial push offset serial ; Pointer to the serial push IDC_EDIT1 ; The edit box to put the info into push _hDlg ; The dialog handle call SetDlgItemText ; Set the text ret ; returnGenKey endp; ############### SUBROUTINE #######################################; Random Number Generator (RNG) at 22 bytesget_random_number proc ; Get 32-bit random number push eax ebx call GetTickCount lea ebx,random_number_seed ; EBX = pointer to random_number_seed mul dword ptr [ebx] ; Multiply previous miliseconds with ; current miliseconds sbb edx,eax ; Add low-order word of 32-bit random ; number to high-order word of 32-bit ; random number cmc ; Complement carry flag adc [ebx],edx ; Store 32-bit random number pop ebx eax retendp; ############### SUBROUTINE #######################################get_random_number_within_range proc ; Get random number within range push ebx call get_random_number xchg eax,ebx ; EBX = number in range xor eax,eax ; Zero EAX xchg eax,edx ; EAX = 32-bit random number div ebx ; EDX = random number within range pop ebx retendp; ############### SUBROUTINE #######################################fnSerialkey proc near arg_0 = dword ptr 4 ; serial number in asciiZ mov eax, [esp+arg_0] push eax call sub_10003820 add esp, 4 retn 4 fnSerialkey endp; ############### SUBROUTINE #######################################sub_10003820 proc near var_10 = dword ptr -10h var_C = byte ptr -0Ch var_3 = byte ptr -3 arg_0 = dword ptr 4 sub esp, 10h push ebx push ebp mov ebp, [esp+18h+arg_0] push esi test ebp, ebp push edi jnz short loc_1000383C pop edi pop esi pop ebp mov eax, 0FFFFFFFBh pop ebx add esp, 10h retnloc_1000383C: mov edi, ebp or ecx, 0FFFFFFFFh xor eax, eax repne scasb not ecx dec ecx cmp ecx, 9 ; must be 9 chars long jz short loc_10003870 cmp ecx, 0Eh ; or be 14 chars long jz short loc_1000385D pop edi pop esi pop ebp or eax, 0FFFFFFFFh pop ebx add esp, 10h retnloc_1000385D: cmp byte ptr [ebp+9], 2Dh ; dash '-' jz short loc_10003870 pop edi pop esi pop ebp mov eax, 0FFFFFFFEh pop ebx add esp, 10h retnloc_10003870: mov edx, ebp lea esi, [esp+20h+var_C] sub edx, esi mov [esp+20h+var_3], 0 lea eax, [esp+20h+var_C] mov esi, 9loc_10003886: mov bl, [edx+eax] sub bl, 30h ; '0' mov [eax], bl inc eax dec esi jnz short loc_10003886 lea eax, [ebp+0Ah] lea esi, [esp+20h+var_C] mov edi, 9 ; 9 chars mov eax, [eax] mov [esp+20h+var_10], eaxloc_100038A4: xor edx, edx xor eax, eax mov dl, [esi] mov ebx, 0Ah mov al, byte ptr unk_1000C29C[edx] xor edx, edx mov dl, [esi+1] sub eax, edx add eax, 0Ah cdq idiv ebx inc esi dec edi mov [esi-1], dl jnz short loc_100038A4 xor ebp, ebp cmp ecx, 0Eh ; 14 chars jnz short loc_1000392C xor cl, clloc_100038D2: movsx eax, cl mov al, byte ptr [esp+eax+20h+var_10] cmp al, 30h ; 30 = '0' mov byte ptr [esp+20h+arg_0], al jb short loc_10003919 cmp al, 5Ah ; 5A = Z ja short loc_10003919 cmp al, 39h ; 39 = 9 jbe short loc_10003907 cmp al, 41h ; 41 = A jb short loc_10003919loc_100038ED: mov eax, [esp+20h+arg_0] and eax, 0FFh sub eax, 37h ; 37 = 7loc_100038F9: shl ebp, 5 add ebp, eax inc cl cmp cl, 4 ; 4 chars jl short loc_100038D2 jmp short loc_10003926loc_10003907: cmp al, 41h ; 41 = A jnb short loc_100038ED mov eax, [esp+20h+arg_0] and eax, 0FFh sub eax, 30h ; 30 = 0 jmp short loc_100038F9loc_10003919: pop edi pop esi pop ebp mov eax, 0FFFFFFFDh pop ebx add esp, 10h retnloc_10003926: xor ebp, 0B73BBhloc_1000392C: xor eax, eax lea ecx, [esp+20h+var_C] mov edx, 9loc_10003937: xor ebx, ebx lea eax, [eax+eax*4] mov bl, [ecx] inc ecx dec edx lea eax, [ebx+eax*2] jnz short loc_10003937 mov esi, eax and eax, 0D555555h and esi, 0F2AAAAAAh xor edx, edx xor ecx, ecx mov edi, 0Dhloc_1000395B: test dword ptr unk_1000C194[ecx], esi jbe short loc_10003973 mov ebx, dword ptr unk_1000C110[ecx] xor eax, ebx mov ebx, dword ptr unk_1000C218[ecx] add edx, ebxloc_10003973: add ecx, 4 dec edi jnz short loc_1000395B xor ecx, ecx mov esi, 0Fhloc_10003980: test dword ptr unk_1000C1C8[ecx], ebp jbe short loc_10003998 mov ebx, dword ptr unk_1000C144[ecx] mov edi, dword ptr unk_1000C24C[ecx] xor eax, ebx add edx, ediloc_10003998: add ecx, 4 dec esi jnz short loc_10003980 mov ecx, eax xor ecx, 0C104145h jnz short loc_100039B2 pop edi pop esi pop ebp mov eax, edx pop ebx add esp, 10h retnloc_100039B2: mov ecx, eax xor ecx, 0C540515h jnz short loc_100039C7 pop edi pop esi pop ebp lea eax, [edx+1] pop ebx add esp, 10h retnloc_100039C7: xor eax, 0C114055h lea eax, [edx+2] jz short loc_100039D6 mov eax, 0FFFFFFFChloc_100039D6: pop edi pop esi pop ebp pop ebx add esp, 10h retnsub_10003820 endpend code_begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -