00401000 |
]/$ 6A 00 |
PUSH 0 |
; /pModule = NULL |
00401002 |
|. E8 AB010000 |
CALL [JMP.&kernel32.GetModuleHandleA] |
; \GetModuleHandleA (*1*) |
00401007 |
|. A3 50304000 |
MOV DWORD PTR DS:[403050],EAX |
0040100C |
|. 6A 00 |
PUSH 0 |
; /lParam = NULL |
0040100E |
|. 68 29104000 |
PUSH elooo1.00401029 |
; |DlgProc = elooo1.00401029 |
00401013 |
|. 6A 00 |
PUSH 0 |
; |hOwner = NULL |
00401015 |
|. 6A 65 |
PUSH 65 |
; |pTemplate = 65 |
00401017 |
|. FF35 50304000 |
PUSH DWORD PTR DS:[403050] |
; |hInst = 00400000 |
0040101D |
|. E8 60010000 |
CALL [JMP.&user32.DialogBoxParamA] |
; \DialogBoxParamA (*2*) |
00401022 |
|. 6A 00 |
PUSH 0 |
; /ExitCode = 0 |
00401024 |
\. E8 83010000 |
CALL [JMP.&kernel32.ExitProcess] |
; \ExitProcess (*3*) |
00401029 |
/. 55 |
PUSH EBP |
0040102A |
|. 8BEC |
MOV EBP,ESP |
0040102C |
|. 8B45 0C |
MOV EAX,DWORD PTR SS:[EBP+C] |
0040102F |
|. 83F8 10 |
CMP EAX,10 |
00401032 |
|. 75 0F |
JNZ SHORT elooo1.00401043 |
00401034 |
|. 6A 00 |
PUSH 0 |
; /Result = 0 |
00401036 |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hWnd |
00401039 |
|. E8 4A010000 |
CALL [JMP.&user32.EndDialog] |
; \EndDialog (*4*) |
0040103E |
|. E9 C3000000 |
JMP elooo1.00401106 |
00401043 |
|] 3D 01020000 |
CMP EAX,201 |
00401048 |
|. 75 18 |
JNZ SHORT elooo1.00401062 |
0040104A |
|. 8B45 14 |
MOV EAX,DWORD PTR SS:[EBP+14] |
0040104D |
|. 50 |
PUSH EAX |
; /lParam |
0040104E |
|. 6A 02 |
PUSH 2 |
; |wParam = 2 |
00401050 |
|. 68 A1000000 |
PUSH 0A1 |
; |Message = WM_NCLBUTTONDOWN |
00401055 |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hWnd |
00401058 |
|. E8 43010000 |
CALL [JMP.&user32.PostMessageA] |
; \PostMessageA (*5*) |
0040105D |
|. E9 A4000000 |
JMP elooo1.00401106 |
00401062 |
|] 3D 10010000 |
CMP EAX,110 |
00401067 |
|. 75 21 |
JNZ SHORT elooo1.0040108A |
00401069 |
|. 33C0 |
XOR EAX,EAX |
0040106B |
|. 6A 66 |
PUSH 66 |
; /RsrcName = 102. |
0040106D |
|. FF35 50304000 |
PUSH DWORD PTR DS:[403050] |
; |hInst = 00400000 |
00401073 |
|. E8 1C010000 |
CALL [JMP.&user32.LoadIconA] |
; \LoadIconA (*6*) |
00401078 |
|. 50 |
PUSH EAX |
; /lParam |
00401079 |
|. 6A 00 |
PUSH 0 |
; |wParam = 0 |
0040107B |
|. 68 80000000 |
PUSH 80 |
; |Message = WM_SETICON |
00401080 |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hWnd |
00401083 |
|. E8 1E010000 |
CALL [JMP.&user32.SendMessageA] |
; \SendMessageA (*7*) |
00401088 |
|. EB 7C |
JMP SHORT elooo1.00401106 |
0040108A |
|] 3D 11010000 |
CMP EAX,111 |
0040108F |
|. 75 6C |
JNZ SHORT elooo1.004010FD |
00401091 |
|. 8B45 10 |
MOV EAX,DWORD PTR SS:[EBP+10] |
00401094 |
|. 8B55 10 |
MOV EDX,DWORD PTR SS:[EBP+10] |
00401097 |
|. C1EA 10 |
SHR EDX,10 |
0040109A |
|. 66:3D E903 |
CMP AX,3E9 |
0040109E |
|. 75 4C |
JNZ SHORT elooo1.004010EC |
004010A0 |
|. 68 49304000 |
PUSH elooo1.00403049 |
; /String2 = "Grmbl" |
004010A5 |
|. 68 58304000 |
PUSH elooo1.00403058 |
; |String1 = elooo1.00403058 |
004010AA |
|. E8 09010000 |
CALL [JMP.&kernel32.lstrcpyA] |
; \lstrcpyA (*8*) |
004010AF |
|. 6A 2D |
PUSH 2D |
; /Count = 2D (45.) |
004010B1 |
|. 68 00304000 |
PUSH elooo1.00403000 |
; |Buffer = elooo1.00403000 |
004010B6 |
|. 68 EB030000 |
PUSH 3EB |
; |ControlID = 3EB (1003.) |
004010BB |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hWnd |
004010BE |
|. E8 CB000000 |
CALL [JMP.&user32.GetDlgItemTextA] |
; \GetDlgItemTextA (*9*) |
004010C3 |
|. E8 47000000 |
CALL elooo1.0040110F |
; ********** CALL DE VERIF DU SERIAL ********** |
004010C8 |
|. 6A 00 |
PUSH 0 |
; /Style = MB_OK|MB_APPLMODAL |
004010CA |
|. 68 37304000 |
PUSH elooo1.00403037 |
; |Title = "Hehe" |
004010CF |
|. 68 58304000 |
PUSH elooo1.00403058 |
; |Text = "Grmbl" |
004010D4 |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hOwner |
004010D7 |
|. E8 BE000000 |
CALL [JMP.&user32.MessageBoxA] |
; \MessageBoxA (*10*) |
004010DC |
|. 33C0 |
XOR EAX,EAX |
004010DE |
|. BF 00304000 |
MOV EDI,elooo1.00403000 |
; ASCII "12345" |
004010E3 |
|. B9 32000000 |
MOV ECX,32 |
004010E8 |
|. F3:AA |
REP STOS BYTE PTR ES:[EDI] |
; Vide le buffer qui contient le serial |
004010EA |
|. EB 1A |
JMP SHORT elooo1.00401106 |
004010EC |
|] 66:3D EA03 |
CMP AX,3EA |
004010F0 |
|. 75 14 |
JNZ SHORT elooo1.00401106 |
004010F2 |
|. 50 |
PUSH EAX |
; /Result |
004010F3 |
|. FF75 08 |
PUSH DWORD PTR SS:[EBP+8] |
; |hWnd |
004010F6 |
|. E8 8D000000 |
CALL [JMP.&user32.EndDialog] |
; \EndDialog |
004010FB |
|. EB 09 |
JMP SHORT elooo1.00401106 |
004010FD |
|] B8 00000000 |
MOV EAX,0 |
00401102 |
|. C9 |
LEAVE |
00401103 |
|. C2 1000 |
RETN 10 |
00401106 |
|] B8 01000000 |
MOV EAX,1 |
0040110B |
|. C9 |
LEAVE |
0040110C |
\. C2 1000 |
RETN 10 |
0040110F |
/$ 60 |
PUSHAD |
; ***** DEBUT DU CALL DE VERIF ***** (registres sauves sur la pile) |
00401110 |
|. 68 00304000 |
PUSH elooo1.00403000 |
; parametre du call qui va suivre (ce paramètre = serial entre) |
00401115 |
|. E8 32000000 |
CALL elooo1.0040114C |
; convertit le serial entre en hexa (valeur retournee dans eax) |
0040111A |
|. B9 07000000 |
MOV ECX,7 |
; ecx = 7 |
0040111F |
|. 99 |
CDQ |
; [edx:eax] = eax (eax etendu a 64 bits et edx = 0 - sign(eax)) |
00401120 |
|. F7F9 |
IDIV ECX |
; eax = eax / ecx (division signee ; eax = resultat et edx = modulo) |
00401122 |
|. 83E9 03 |
SUB ECX,3 |
; ecx = ecx - 3 |
00401125 |
99 |
CDQ |
00401126 |
|. F7E9 |
IMUL ECX |
; eax = eax * ecx (multiplication signee) |
00401128 |
|. 05 37130000 |
ADD EAX,1337 |
; eax = eax + 1337h |
0040112D |
|. 83E8 09 |
SUB EAX,9 |
; eax = eax - 9 |
00401130 |
|. 3B05 32304000 |
CMP EAX,DWORD PTR DS:[403032] |
; eax = DS:[403032] ? (DS:[403032] = 0BADCAFEh) |
00401136 |
|. 75 0F |
JNZ SHORT elooo1.00401147 |
; if (eax != 0BADCAFEh) on jmp a popad |
00401138 |
|. 68 3C304000 |
PUSH elooo1.0040303C |
; /String2 = "C'est good !" |
0040113D |
|. 68 58304000 |
PUSH elooo1.00403058 |
; |String1 = elooo1.00403058 |
00401142 |
|. E8 71000000 |
CALL [JMP.&kernel32.lstrcpyA] |
; \lstrcpyA |
00401147 |
|] 61 |
POPAD |
; ***** FIN DU CALL DE VERIF ***** (registres recuperes de la pile) |
00401148 |
\. C3 |
RETN |
; Retour a l'instruction qui suit l'appel au call (004010C8) |
00401149 |
CC |
INT3 |
0040114A |
CC |
INT3 |
0040114B |
CC |
INT3 |
0040114C |
/$ 55 |
PUSH EBP |
; Debut de la fonction de convertion en hexa |
0040114D |
|. 8BEC |
MOV EBP,ESP |
0040114F |
|. 56 |
PUSH ESI |
00401150 |
|. 57 |
PUSH EDI |
00401151 |
|. 33C0 |
XOR EAX,EAX |
; eax = 0 |
00401153 |
|. 8B75 08 |
MOV ESI,DWORD PTR SS:[EBP+8] |
; esi = offset du buffer qui contient le serial entre |
00401156 |
|. 33C9 |
XOR ECX,ECX |
; ecx = 0 |
00401158 |
|. 33D2 |
XOR EDX,EDX |
; edx = 0 |
0040115A |
|. 8A06 |
MOV AL,BYTE PTR DS:[ESI] |
; prend chaque caractere du serial rentre 1 a 1 |
0040115C |
|. 46 |
INC ESI |
; esi++ (caractere suivant) |
0040115D |
|. 3C 02 |
CMP AL,2 |
; hexa(caractere) = 2 ? |
0040115F |
|. 75 12 |
JNZ SHORT elooo1.00401173 |
; if (hexa(caractere= != 2)) alors jmp 00401173 |
00401161 |
|. 8A06 |
MOV AL,BYTE PTR DS:[ESI] |
00401163 |
|. F7D2 |
NOT EDX |
00401165 |
|. 46 |
INC ESI |
00401166 |
|. EB 0B |
JMP SHORT elooo1.00401173 |
00401168 |
|] 2C 30 |
/SUB AL,30 |
; (hexa(caractere) stocke dans al) - 30h |
0040116A |
|. 8D0C89 |
|LEA ECX,DWORD PTR DS:[ECX+ECX*4] |
; / |
0040116D |
|. 8D0C48 |
|LEA ECX,DWORD PTR DS:[EAX+ECX*2] |
; \ convertit en hexa |
00401170 |
|. 8A06 |
|MOV AL,BYTE PTR DS:[ESI] |
; al = hexa(caractere suivant) |
00401172 |
|. 46 |
|INC ESI |
; esi++ |
00401173 |
|] 0AC0 |
OR AL,AL |
00401175 |
|.^ 75 F1 |
\JNZ SHORT elooo1.00401168 |
; s'il reste encor des caractere du serial on jmp en 00401166 |
00401177 |
|. 8D0411 |
LEA EAX,DWORD PTR DS:[ECX+EDX] |
; met l'offset du buffer "resultat" dans eax |
0040117A |
|. 33C2 |
XOR EAX,EDX |
0040117C |
|. 5F |
POP EDI |
0040117D |
|. 5E |
POP ESI |
0040117E |
|. C9 |
LEAVE |
0040117F |
\. C2 0400 |
RETN 4 |
; on quitte la fonction et revient a notre routine |
00401182 |
$- FF25 20204000 |
JMP DWORD PTR DS:[[&user32.DialogBoxPara] |
; user32.DialogBoxParamA |
00401188 |
$- FF25 1C204000 |
JMP DWORD PTR DS:[[&user32.EndDialog]] |
; user32.EndDialog |
0040118E |
$- FF25 14204000 |
JMP DWORD PTR DS:[[&user32.GetDlgItemTex] |
; user32.GetDlgItemTextA |
00401194 |
$- FF25 28204000 |
JMP DWORD PTR DS:[[&user32.LoadIconA]] |
; user32.LoadIconA |
0040119A |
$- FF25 10204000 |
JMP DWORD PTR DS:[[&user32.MessageBoxA]] |
; user32.MessageBoxA |
004011A0 |
$- FF25 24204000 |
JMP DWORD PTR DS:[[&user32.PostMessageA]] |
; user32.PostMessageA |
004011A6 |
$- FF25 18204000 |
JMP DWORD PTR DS:[[&user32.SendMessageA]] |
; user32.SendMessageA |
004011AC |
.- FF25 04204000 |
JMP DWORD PTR DS:[[&kernel32.ExitProcess] |
; kernel32.ExitProcess |
004011B2 |
$- FF25 00204000 |
JMP DWORD PTR DS:[[&kernel32.GetModuleHa] |
; kernel32.GetModuleHandleA |
004011B8 |
$- FF25 08204000 |
JMP DWORD PTR DS:[[&kernel32.lstrcpyA]] |
; kernel32.lstrcpyA |
004011BE |
00 |
DB 00 |