Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __fastcall check_code(BYTE *email, BYTE *serial)
- {
- int v2; // ebp@0
- BYTE *p; // ebx@1
- signed int i; // ecx@1
- BYTE c; // al@2
- int v6; // edi@9
- signed int i1; // edx@9
- BYTE v8; // cl@10
- char v9; // al@10
- int v10; // edx@16
- signed int v11; // esi@16
- BYTE v12; // cl@17
- char v13; // al@17
- int s4; // ecx@23
- signed int v15; // esi@23
- BYTE v16; // bl@24
- char v17; // al@24
- unsigned int s3; // esi@30
- signed int v19; // edi@30
- char v20; // bl@31
- char v21; // al@31
- struct_1 *v22; // ebx@37
- int v23; // edx@37
- signed int v24; // esi@37
- char v25; // cl@38
- char v26; // al@38
- int v27; // edi@44
- signed int v28; // esi@44
- char v29; // cl@45
- char v30; // al@45
- int b2; // ecx@51
- signed int v32; // esi@51
- char v33; // bl@52
- char v34; // al@52
- unsigned int b1; // esi@58
- signed int v36; // edx@58
- char v37; // bl@59
- char v38; // al@59
- struct_1 *v39; // ebx@65
- int v40; // edi@65
- signed int v41; // edx@65
- char v42; // cl@66
- char v43; // al@66
- int v44; // ecx@72
- signed int v45; // esi@72
- char v46; // dl@73
- char v47; // al@73
- int c2; // edx@79
- signed int v49; // esi@79
- char v50; // bl@80
- char v51; // al@80
- unsigned int c1; // esi@86
- signed int v53; // edi@86
- char v54; // bl@87
- char v55; // al@87
- struct_1 *v56; // ebx@93
- int v57; // ecx@93
- signed int v58; // esi@93
- char v59; // dl@94
- char v60; // al@94
- int v61; // edi@100
- signed int v62; // esi@100
- char v63; // dl@101
- char v64; // al@101
- int d2; // edx@107
- signed int v66; // esi@107
- char v67; // bl@108
- char v68; // al@108
- unsigned int d1; // esi@114
- signed int v70; // ecx@114
- char v71; // bl@115
- char v72; // al@115
- struct_1 *n; // edi@121
- struct_1 *l_k; // ebx@121
- struct_1 *e; // esi@121
- struct_1 *enc; // ebx@121
- struct_1 *v77; // esi@121
- int v78; // eax@121
- int *v79; // ecx@121
- char *v80; // edx@121
- unsigned int v81; // esi@121
- bool f; // cf@123
- DWORD v83; // eax@124
- struct_1 *v84; // eax@126
- int v85; // ebx@126
- struct_1 *es0; // esi@126
- signed int i0; // edi@126
- int es1; // eax@127
- struct_1 *exp1; // ebx@128
- int v90; // esi@128
- DWORD *hard_hash_list; // ebx@128
- int data_3h; // edi@128
- DWORD *p1; // ecx@129
- DWORD *p2; // edx@129
- unsigned int len; // esi@129
- signed int ii; // esi@133
- struct_1 *l_k__; // [sp+Ch] [bp-25Ch]@1
- struct_1 *o; // [sp+10h] [bp-258h]@23
- struct_1 *t0; // [sp+14h] [bp-254h]@16
- struct_1 *tmp0; // [sp+18h] [bp-250h]@1
- struct_1 *n_; // [sp+1Ch] [bp-24Ch]@121
- md5_context ctxmd4; // [sp+20h] [bp-248h]@121
- aes_context ctxaes128; // [sp+B8h] [bp-1B0h]@121
- DWORD k[4]; // [sp+1B0h] [bp-B8h]@37
- char hash2; // [sp+1C0h] [bp-A8h]@121
- char v107; // [sp+1D0h] [bp-98h]@133
- char Text[132]; // [sp+1E0h] [bp-88h]@134
- unsigned int v109; // [sp+264h] [bp-4h]@1
- v109 = (unsigned int)&l_k__ ^ __security_cookie;
- p = serial;
- tmp0 = (struct_1 *)email;
- l_k__ = (struct_1 *)serial;
- i = 0;
- while ( 1 )
- {
- c = serial[i];
- if ( (char)c < '0' || (char)c > '9' )
- {
- if ( ((char)c < 'A' || (char)c > 'F') && ((char)c < 'a' || (char)c > 'f') )
- return 0;
- }
- ++i;
- if ( i >= (signed int)0x20u )
- {
- v6 = 0;
- i1 = 0;
- do
- {
- v8 = p[i1];
- v9 = v8 - 48;
- if ( (unsigned __int8)(v8 - 48) > 9u )
- {
- if ( (unsigned __int8)(v8 - 'a') > 5u )
- {
- if ( (unsigned __int8)(v8 - 'A') > 5u )
- break;
- v9 = v8 - 0x37;
- }
- else
- {
- v9 = v8 - 0x57;
- }
- }
- ++i1;
- v6 = v9 + 16 * v6;
- }
- while ( i1 < 8 );
- v10 = 0;
- t0 = (struct_1 *)v6;
- v11 = 0;
- do
- {
- v12 = p[v11];
- v13 = v12 - 48;
- if ( (unsigned __int8)(v12 - 48) > 9u )
- {
- if ( (unsigned __int8)(v12 - 97) > 5u )
- {
- if ( (unsigned __int8)(v12 - 65) > 5u )
- break;
- v13 = v12 - 55;
- }
- else
- {
- v13 = v12 - 87;
- }
- }
- ++v11;
- v10 = v13 + 16 * v10;
- }
- while ( v11 < 8 );
- s4 = 0;
- o = (struct_1 *)v10;
- v15 = 0;
- do
- {
- v16 = p[v15];
- v17 = v16 - '0';
- if ( (unsigned __int8)(v16 - '0') > 9u )
- {
- if ( (unsigned __int8)(v16 - 'a') > 5u )
- {
- if ( (unsigned __int8)(v16 - 'A') > 5u )
- break;
- v17 = v16 - '7';
- }
- else
- {
- v17 = v16 - 'W';
- }
- }
- p = (BYTE *)l_k__;
- ++v15;
- s4 = v17 + 16 * s4;
- }
- while ( v15 < 8 );
- s3 = 0;
- v19 = 0;
- do
- {
- v20 = *((_BYTE *)&l_k__->ind + v19);
- v21 = v20 - 48;
- if ( (unsigned __int8)(v20 - 48) > 9u )
- {
- if ( (unsigned __int8)(v20 - 97) > 5u )
- {
- if ( (unsigned __int8)(v20 - 65) > 5u )
- break;
- v21 = v20 - 55;
- }
- else
- {
- v21 = v20 - 87;
- }
- }
- ++v19;
- s3 = v21 + 16 * s3;
- }
- while ( v19 < 8 );
- v22 = l_k__;
- v23 = 0;
- k[0] = ((((_DWORD)t0 << 16) | (unsigned __int16)((unsigned __int16)o & 0xFF00)) << 8) | (((s3 >> 16) | s4 & 0xFF0000) >> 8);
- v24 = 0;
- do
- {
- v25 = *((_BYTE *)&l_k__->d3 + v24);
- v26 = v25 - 48;
- if ( (unsigned __int8)(v25 - 48) > 9u )
- {
- if ( (unsigned __int8)(v25 - 97) > 5u )
- {
- if ( (unsigned __int8)(v25 - 65) > 5u )
- break;
- v26 = v25 - 55;
- }
- else
- {
- v26 = v25 - 87;
- }
- }
- ++v24;
- v23 = v26 + 16 * v23;
- }
- while ( v24 < 8 );
- v27 = 0;
- t0 = (struct_1 *)v23;
- v28 = 0;
- do
- {
- v29 = *((_BYTE *)&l_k__->d3 + v28);
- v30 = v29 - 48;
- if ( (unsigned __int8)(v29 - 48) > 9u )
- {
- if ( (unsigned __int8)(v29 - 97) > 5u )
- {
- if ( (unsigned __int8)(v29 - 65) > 5u )
- break;
- v30 = v29 - 55;
- }
- else
- {
- v30 = v29 - 87;
- }
- }
- ++v28;
- v27 = v30 + 16 * v27;
- }
- while ( v28 < 8 );
- b2 = 0;
- o = (struct_1 *)v27;
- v32 = 0;
- do
- {
- v33 = *((_BYTE *)&v22->d3 + v32);
- v34 = v33 - 48;
- if ( (unsigned __int8)(v33 - 48) > 9u )
- {
- if ( (unsigned __int8)(v33 - 97) > 5u )
- {
- if ( (unsigned __int8)(v33 - 65) > 5u )
- break;
- v34 = v33 - 55;
- }
- else
- {
- v34 = v33 - 87;
- }
- }
- v22 = l_k__;
- ++v32;
- b2 = v34 + 16 * b2;
- }
- while ( v32 < 8 );
- b1 = 0;
- v36 = 0;
- do
- {
- v37 = *((_BYTE *)&l_k__->d3 + v36);
- v38 = v37 - 48;
- if ( (unsigned __int8)(v37 - 48) > 9u )
- {
- if ( (unsigned __int8)(v37 - 97) > 5u )
- {
- if ( (unsigned __int8)(v37 - 65) > 5u )
- break;
- v38 = v37 - 55;
- }
- else
- {
- v38 = v37 - 87;
- }
- }
- ++v36;
- b1 = v38 + 16 * b1;
- }
- while ( v36 < 8 );
- v39 = l_k__;
- v40 = 0;
- v41 = 0;
- k[1] = (((unsigned __int16)((unsigned __int16)o & 0xFF00) | ((_DWORD)t0 << 16)) << 8) | (((b1 >> 16) | b2 & 0xFF0000) >> 8);
- do
- {
- v42 = *((_BYTE *)&l_k__[1].buf + v41);
- v43 = v42 - 48;
- if ( (unsigned __int8)(v42 - 48) > 9u )
- {
- if ( (unsigned __int8)(v42 - 97) > 5u )
- {
- if ( (unsigned __int8)(v42 - 65) > 5u )
- break;
- v43 = v42 - 55;
- }
- else
- {
- v43 = v42 - 87;
- }
- }
- ++v41;
- v40 = v43 + 16 * v40;
- }
- while ( v41 < 8 );
- v44 = 0;
- o = (struct_1 *)v40;
- v45 = 0;
- do
- {
- v46 = *((_BYTE *)&l_k__[1].buf + v45);
- v47 = v46 - 48;
- if ( (unsigned __int8)(v46 - 48) > 9u )
- {
- if ( (unsigned __int8)(v46 - 97) > 5u )
- {
- if ( (unsigned __int8)(v46 - 65) > 5u )
- break;
- v47 = v46 - 55;
- }
- else
- {
- v47 = v46 - 87;
- }
- }
- ++v45;
- v44 = v47 + 16 * v44;
- }
- while ( v45 < 8 );
- c2 = 0;
- t0 = (struct_1 *)v44;
- v49 = 0;
- do
- {
- v50 = *((_BYTE *)&v39[1].buf + v49);
- v51 = v50 - 48;
- if ( (unsigned __int8)(v50 - 48) > 9u )
- {
- if ( (unsigned __int8)(v50 - 97) > 5u )
- {
- if ( (unsigned __int8)(v50 - 65) > 5u )
- break;
- v51 = v50 - 55;
- }
- else
- {
- v51 = v50 - 87;
- }
- }
- v39 = l_k__;
- ++v49;
- c2 = v51 + 16 * c2;
- }
- while ( v49 < 8 );
- c1 = 0;
- v53 = 0;
- do
- {
- v54 = *((_BYTE *)&l_k__[1].buf + v53);
- v55 = v54 - 48;
- if ( (unsigned __int8)(v54 - 48) > 9u )
- {
- if ( (unsigned __int8)(v54 - 97) > 5u )
- {
- if ( (unsigned __int8)(v54 - 65) > 5u )
- break;
- v55 = v54 - 55;
- }
- else
- {
- v55 = v54 - 87;
- }
- }
- ++v53;
- c1 = v55 + 16 * c1;
- }
- while ( v53 < 8 );
- v56 = l_k__;
- k[2] = (((c1 >> 16) | c2 & 0xFF0000) >> 8) | ((((_DWORD)o << 16) | (unsigned __int16)((unsigned __int16)t0 & 0xFF00)) << 8);
- v57 = 0;
- v58 = 0;
- do
- {
- v59 = *((_BYTE *)&l_k__[2].ind + v58);
- v60 = v59 - 48;
- if ( (unsigned __int8)(v59 - 48) > 9u )
- {
- if ( (unsigned __int8)(v59 - 97) > 5u )
- {
- if ( (unsigned __int8)(v59 - 65) > 5u )
- break;
- v60 = v59 - 55;
- }
- else
- {
- v60 = v59 - 87;
- }
- }
- ++v58;
- v57 = v60 + 16 * v57;
- }
- while ( v58 < 8 );
- v61 = 0;
- t0 = (struct_1 *)v57;
- v62 = 0;
- do
- {
- v63 = *((_BYTE *)&l_k__[2].ind + v62);
- v64 = v63 - 48;
- if ( (unsigned __int8)(v63 - 48) > 9u )
- {
- if ( (unsigned __int8)(v63 - 97) > 5u )
- {
- if ( (unsigned __int8)(v63 - 65) > 5u )
- break;
- v64 = v63 - 55;
- }
- else
- {
- v64 = v63 - 87;
- }
- }
- ++v62;
- v61 = v64 + 16 * v61;
- }
- while ( v62 < 8 );
- d2 = 0;
- o = (struct_1 *)v61;
- v66 = 0;
- do
- {
- v67 = *((_BYTE *)&v56[2].ind + v66);
- v68 = v67 - 48;
- if ( (unsigned __int8)(v67 - 48) > 9u )
- {
- if ( (unsigned __int8)(v67 - 97) > 5u )
- {
- if ( (unsigned __int8)(v67 - 65) > 5u )
- break;
- v68 = v67 - 55;
- }
- else
- {
- v68 = v67 - 87;
- }
- }
- v56 = l_k__;
- ++v66;
- d2 = v68 + 16 * d2;
- }
- while ( v66 < 8 );
- d1 = 0;
- v70 = 0;
- do
- {
- v71 = *((_BYTE *)&l_k__[2].ind + v70);
- v72 = v71 - 48;
- if ( (unsigned __int8)(v71 - 48) > 9u )
- {
- if ( (unsigned __int8)(v71 - 97) > 5u )
- {
- if ( (unsigned __int8)(v71 - 65) > 5u )
- break;
- v72 = v71 - 55;
- }
- else
- {
- v72 = v71 - 87;
- }
- }
- ++v70;
- d1 = v72 + 16 * d1;
- }
- while ( v70 < 8 );
- ctxmd4.state[0] = 0x67452301u;
- k[3] = (((d1 >> 16) | d2 & 0xFF0000) >> 8) | (((unsigned __int16)((unsigned __int16)o & 0xFF00) | ((_DWORD)t0 << 16)) << 8);
- ctxmd4.state[1] = 0xEFCDAB89u;
- ctxmd4.state[2] = 0x98BADCFEu;
- ctxmd4.state[3] = 0x10325476u;
- ctxmd4.total[0] = 0;
- ctxmd4.total[1] = 0;
- md4_update(&ctxmd4, (int)tmp0, strlen((const char *)tmp0));
- md4_result((int)&hash2, (int)&ctxmd4);
- aes_128_set_key((int)&hash2, &ctxaes128);
- aes_ecb_decrypt((int)k, (int)k, &ctxaes128);
- *(_DWORD *)(dword_5B087C + 0x234) = 16;
- n = (struct_1 *)malloc_ctx(0);
- n_ = n;
- l_k = (struct_1 *)malloc_ctx(0);
- l_k__ = l_k;
- e = (struct_1 *)malloc_ctx(0x10001u);
- t0 = e;
- inv(0x200u, (BYTE *)N_MODULE, n);
- inv(0x10u, (BYTE *)k, l_k);
- enc = (struct_1 *)malloc_ctx(0);
- o = enc;
- rsa_encrypt(v2, n, l_k__, e, n, enc);
- v77 = (struct_1 *)malloc_ctx(0);
- sub_402DF0(v2, 0x1000u, v77);
- v78 = strcmp(enc, v77);
- tmp0 = (struct_1 *)malloc_ctx(v78 == 0);
- inv_to_buf(0x200u, (int)enc, &DATA_BY_3h_BYTES, 1);
- ctxmd4.state[0] = 0x67452301u;
- ctxmd4.state[1] = 0xEFCDAB89u;
- ctxmd4.state[2] = 0x98BADCFEu;
- ctxmd4.state[3] = 0x10325476u;
- ctxmd4.total[0] = 0;
- ctxmd4.total[1] = 0;
- md4_update(&ctxmd4, (int)&DATA_BY_3h_BYTES, 0x200u);
- md4_result((int)&hash2, (int)&ctxmd4);
- v79 = &HARD_HASH;
- v80 = &hash2;
- v81 = 0xCu;
- while ( *v79 == *(_DWORD *)v80 )
- {
- ++v79;
- v80 += 4;
- f = v81 < 4;
- v81 -= 4;
- if ( f )
- {
- v83 = 1;
- goto next2;
- }
- }
- v83 = 0;
- next2:
- v84 = (struct_1 *)malloc_ctx(v83);
- v85 = strcmp(tmp0, v84) == 0;
- es0 = (struct_1 *)malloc_ctx(0);
- sub_402A40(es0, (BYTE *)n, es0);
- i0 = 7;
- do
- {
- es1 = sub_4035B0(es0);
- sub_402F00(es0, -es1, es0);
- --i0;
- }
- while ( i0 );
- sub_402B20(es0, 9 * v85, es0);
- exp1 = t0;
- sub_402AB0(v2, t0, (BYTE *)es0, t0);
- v90 = (int)o;
- rsa_encrypt(v2, 0, l_k__, exp1, n_, o);
- inv_to_buf(0x200u, v90, &DATA_BY_3h_BYTES, 1);
- hard_hash_list = (DWORD *)&HARD_HASH_LIST;
- data_3h = (int)&DATA_BY_3h_BYTES;
- loop:
- ctxmd4.total[1] = 0;
- ctxmd4.total[0] = 0;
- ctxmd4.state[0] = 0x67452301u;
- ctxmd4.state[1] = 0xEFCDAB89u;
- ctxmd4.state[2] = 0x98BADCFEu;
- ctxmd4.state[3] = 0x10325476u;
- md0_update(&ctxmd4, data_3h, 3u);
- md0_result(&ctxmd4, (struct_1 *)&hash2);
- p1 = hard_hash_list;
- p2 = (DWORD *)&hash2;
- len = 0xCu;
- while ( *p1 == *p2 )
- {
- ++p1;
- ++p2;
- f = len < 4;
- len -= 4;
- if ( f )
- {
- data_3h += 3;
- hard_hash_list += 4;
- if ( data_3h < (signed int)&END_DATA_BY_3h_BYTES )
- goto loop;
- inv_to_buf(0x10u, (int)l_k__, &v107, 1);
- aes_128_set_key((int)&v107, &ctxaes128);
- ii = 0;
- do
- {
- aes_ecb_decrypt((int)&(&TEXT)[ii], (int)&Text[ii], &ctxaes128);
- ii += 0x10u;
- }
- while ( ii < (signed int)0x80u );
- MessageBoxA(0, Text, dword_584188, 0);
- return 1;
- }
- }
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement