-
-
[求助]请问这个像什么加密算法
-
发表于: 2019-5-30 22:14 7480
-
int __fastcall sub_14003C4E0(__int64 a1, __int64 a2, int *a3, __m128i *a4)
{
__int64 v4; // r14@1
int v5; // ecx@1
int v6; // er8@1
int v7; // er10@1
int v8; // er12@1
int v9; // er13@1
int v10; // edi@1
int v11; // eax@1
signed __int64 v12; // r14@1
unsigned int v13; // ecx@3
int v14; // edx@3
__int64 v15; // rax@4
int v16; // edx@5
int v17; // er10@5
int v18; // edi@5
__int64 v19; // rax@5
int v20; // er9@5
__int64 v21; // rax@5
int v22; // er11@5
int v23; // er10@5
int v24; // esi@5
int v25; // edi@5
__int64 v26; // rax@5
int v27; // er8@5
int v28; // edx@5
int v29; // ecx@5
int v30; // edx@5
int v31; // ecx@5
int v32; // edx@5
int v33; // ecx@5
int v34; // edx@5
int *v35; // r9@5
int v36; // er13@5
int v37; // edx@5
int v38; // ecx@5
int v39; // er12@5
int v40; // edx@5
int v41; // ecx@5
int v42; // edx@5
int v43; // esi@5
int v44; // ebx@5
int v45; // er15@5
__int64 v46; // rax@6
__int64 v47; // rcx@6
unsigned int v48; // er13@6
unsigned int v49; // er12@6
int v50; // edi@6
__int64 v51; // rax@6
int v52; // er11@6
int v53; // er9@6
__int64 v54; // rcx@6
unsigned int v55; // ebx@6
__int64 v56; // rax@6
int v57; // edi@6
__int64 v58; // rax@6
int v59; // er9@6
int v60; // edx@6
unsigned int v61; // esi@6
int v62; // er11@6
__int64 v63; // rax@6
int v64; // er10@6
int v65; // er9@6
int v66; // edi@6
__int64 v67; // rcx@6
__int64 v68; // rax@6
int v69; // esi@6
__int64 v70; // rax@6
int v71; // ebx@6
int v72; // er13@6
int v73; // esi@6
__int64 v74; // rdx@6
__int64 v75; // rax@6
int v76; // er12@6
__int64 v77; // rax@6
int v78; // er13@6
__int64 v79; // rax@6
__int64 v80; // rax@7
unsigned int v81; // er12@7
__int64 v82; // rax@7
__int64 v83; // rax@7
unsigned int v84; // ebx@7
__int64 v85; // rax@7
unsigned __int64 v86; // rax@7
int *v87; // rbx@7
__int64 v88; // rax@7
unsigned int v89; // esi@7
__int64 v90; // rax@7
__int64 v91; // rax@7
unsigned int v92; // er13@7
int v93; // ecx@7
__int64 v94; // rax@7
int v95; // eax@7
__m128i *v96; // rdi@9
int v97; // eax@11
int v98; // eax@15
__int64 v100; // [sp+0h] [bp-80h]@21
unsigned int v101; // [sp+20h] [bp-60h]@1
unsigned int v102; // [sp+24h] [bp-5Ch]@1
unsigned int v103; // [sp+28h] [bp-58h]@1
unsigned int v104; // [sp+2Ch] [bp-54h]@3
int v105; // [sp+30h] [bp-50h]@1
int v106; // [sp+34h] [bp-4Ch]@1
int v107; // [sp+38h] [bp-48h]@17
int v108; // [sp+3Ch] [bp-44h]@21
__int64 v109; // [sp+40h] [bp-40h]@1
int *v110; // [sp+48h] [bp-38h]@1
__m128i *v111; // [sp+50h] [bp-30h]@1
int v112; // [sp+58h] [bp-28h]@7
int v113; // [sp+5Ch] [bp-24h]@7
int v114; // [sp+60h] [bp-20h]@7
int v115; // [sp+64h] [bp-1Ch]@7
__int64 v116; // [sp+70h] [bp-10h]@21
v4 = *(_QWORD *)(a1 + 280);
v110 = a3;
v109 = a1;
v111 = a4;
v5 = *(_DWORD *)(v4 + 20);
v6 = *(_DWORD *)a2 ^ *(_DWORD *)v4;
v7 = *(_DWORD *)(a2 + 12) ^ *(_DWORD *)(v4 + 12);
v8 = *(_DWORD *)(v4 + 24);
v9 = *(_DWORD *)(v4 + 28);
v10 = *(_DWORD *)(a2 + 8) ^ *(_DWORD *)(v4 + 8);
v103 = *(_DWORD *)(a2 + 4) ^ *(_DWORD *)(v4 + 4);
v11 = *(_DWORD *)(v4 + 16);
v12 = v4 + 32;
v101 = v6;
v102 = v7;
v105 = v11;
v106 = v5;
if ( !byte_1400F49CC )
{
sub_14004D1E0();
v6 = v101;
v7 = v102;
}
v104 = 0;
v13 = 0;
v14 = 0;
do
{
v15 = v13;
v13 += dword_1400EC170;
v14 &= *(_DWORD *)&dword_1400F2740[v15];
}
while ( v13 < 0x400 );
v16 = dword_1400F2B3C & v14;
v101 = v16 | v6;
v17 = v16 | v7;
v18 = v16 | v10;
v19 = (unsigned __int8)v17;
v17 = (unsigned int)v17 >> 8;
v20 = *(_DWORD *)&dword_1400F2740[4 * v19];
v102 = (unsigned int)v17 >> 8;
v21 = (unsigned __int8)v18;
v18 = (unsigned int)v18 >> 8;
v22 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v17], 8);
v23 = *(_DWORD *)&dword_1400F2740[4 * v21];
v104 = (unsigned int)v18 >> 8;
v24 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v18], 8);
v25 = *(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)(v16 | v103)];
v26 = (unsigned __int8)((unsigned __int16)(v16 | v103) >> 8);
v103 = (v16 | v103) >> 16;
v27 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * v26], 8);
v28 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v102 >> 8)], 24);
v29 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v104], 16);
v105 ^= v27 ^ *(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v101] ^ v29 ^ v28;
v30 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v104 >> 8)], 24);
v31 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * BYTE1(v101)], 8);
v32 = v31 ^ v30;
v33 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v103], 16);
v34 = v20 ^ v33 ^ v32;
v35 = (int *)dword_1400F2740;
v36 = v34 ^ v9;
v37 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v103 >> 8)], 24);
v38 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)(v101 >> 16)], 16);
v39 = v23 ^ v22 ^ v38 ^ v37 ^ v8;
v40 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)(v101 >> 16) >> 8)], 24);
v41 = __ROR4__(*(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v102], 16);
v42 = v25 ^ v24 ^ v41 ^ v40;
v43 = v105;
v44 = v42 ^ v106;
v45 = (*(_DWORD *)(v109 + 16) >> 1) - 1;
do
{
v46 = (unsigned __int8)v36;
v47 = (unsigned int)(unsigned __int8)v39 + 768;
v48 = (unsigned int)v36 >> 8;
v49 = (unsigned int)v39 >> 8;
v50 = *(_DWORD *)v12 ^ v35[v46 + 768];
v51 = (unsigned __int8)v48;
v48 >>= 8;
v52 = v35[v51 + 512];
v53 = v35[v47];
v54 = (unsigned int)(unsigned __int8)v44 + 768;
v55 = (unsigned int)v44 >> 8;
v56 = (unsigned int)(unsigned __int8)v49 + 512;
v49 >>= 8;
v57 = *(_DWORD *)&dword_1400F2740[4 * v56] ^ v50;
v58 = (unsigned int)(unsigned __int8)v55 + 512;
v55 >>= 8;
v59 = *(_DWORD *)&dword_1400F2740[4 * v58] ^ *(_DWORD *)(v12 + 12) ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v48 >> 8)] ^ v53;
v60 = (unsigned __int8)v43;
v61 = (unsigned int)v43 >> 8;
v62 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v55 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v49 + 256)] ^ *(_DWORD *)&dword_1400F2740[4 * (v60 + 768)] ^ *(_DWORD *)(v12 + 4) ^ v52;
v63 = (unsigned int)(unsigned __int8)v61 + 512;
v61 >>= 8;
v64 = *(_DWORD *)&dword_1400F2740[4 * v63] ^ *(_DWORD *)(v12 + 8) ^ *(_DWORD *)&dword_1400F2740[4 * (unsigned __int8)v48 + 1024] ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v49 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * v54];
v65 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v61 + 256)] ^ v59;
v66 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)v61 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v55 + 256)] ^ v57;
v67 = (unsigned int)(unsigned __int8)v64 + 768;
v68 = (unsigned int)(unsigned __int8)v65 + 768;
v65 = (unsigned int)v65 >> 8;
v64 = (unsigned int)v64 >> 8;
v69 = *(_DWORD *)(v12 + 16) ^ *(_DWORD *)&dword_1400F2740[4 * v68];
v70 = (unsigned int)(unsigned __int8)v65 + 512;
v65 = (unsigned int)v65 >> 8;
v71 = *(_DWORD *)(v12 + 20) ^ *(_DWORD *)&dword_1400F2740[4 * v70];
v72 = *(_DWORD *)(v12 + 28) ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)(unsigned int)v65 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * v67];
v73 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v64 + 512)] ^ v69;
v12 += 32i64;
v74 = (unsigned int)(unsigned __int8)v62 + 768;
v75 = (unsigned int)(unsigned __int8)v65 + 256;
v64 = (unsigned int)v64 >> 8;
v35 = (int *)dword_1400F2740;
v62 = (unsigned int)v62 >> 8;
v76 = *(_DWORD *)&dword_1400F2740[4 * v75] ^ *(_DWORD *)&dword_1400F2740[4 * v74];
LODWORD(v74) = (unsigned __int8)v66;
v66 = (unsigned int)v66 >> 8;
v77 = (unsigned int)(unsigned __int8)v62 + 512;
v62 = (unsigned int)v62 >> 8;
v78 = *(_DWORD *)&dword_1400F2740[4 * v77] ^ v72;
v44 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)(unsigned int)v62 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v64 + 256)] ^ *(_DWORD *)&dword_1400F2740[4 * (unsigned int)(v74 + 768)] ^ v71;
v79 = (unsigned int)(unsigned __int8)v66 + 512;
v66 = (unsigned int)v66 >> 8;
v39 = *(_DWORD *)&dword_1400F2740[4 * v79] ^ *(_DWORD *)(v12 - 8) ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)(unsigned int)v64 >> 8)] ^ v76;
v36 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v66 + 256)] ^ v78;
v43 = *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int64)(unsigned int)v66 >> 8)] ^ *(_DWORD *)&dword_1400F2740[4 * ((unsigned __int8)v62 + 256)] ^ v73;
--v45;
}
while ( v45 );
v80 = (unsigned __int8)v39;
v81 = (unsigned int)v39 >> 8;
BYTE3(v115) = dword_1400F2740[4 * v80 + 1];
v82 = (unsigned __int8)v81;
v81 >>= 8;
BYTE2(v112) = dword_1400F2740[4 * v82 + 1];
BYTE1(v113) = dword_1400F2740[4 * (unsigned __int64)(unsigned __int8)v81 + 1];
LOBYTE(v114) = dword_1400F2740[4 * ((unsigned __int64)v81 >> 8) + 1];
v83 = (unsigned __int8)v44;
v84 = (unsigned int)v44 >> 8;
BYTE3(v114) = dword_1400F2740[4 * v83 + 1];
v85 = (unsigned __int8)v84;
v84 >>= 8;
BYTE2(v115) = dword_1400F2740[4 * v85 + 1];
BYTE1(v112) = dword_1400F2740[4 * (unsigned __int64)(unsigned __int8)v84 + 1];
v86 = v84;
v87 = v110;
LOBYTE(v113) = dword_1400F2740[4 * (v86 >> 8) + 1];
v88 = (unsigned __int8)v43;
v89 = (unsigned int)v43 >> 8;
BYTE3(v113) = dword_1400F2740[4 * v88 + 1];
v90 = (unsigned __int8)v89;
v89 >>= 8;
BYTE2(v114) = dword_1400F2740[4 * v90 + 1];
BYTE1(v115) = dword_1400F2740[4 * (unsigned __int64)(unsigned __int8)v89 + 1];
LOBYTE(v112) = dword_1400F2740[4 * ((unsigned __int64)v89 >> 8) + 1];
v91 = (unsigned __int8)v36;
v92 = (unsigned int)v36 >> 8;
BYTE3(v112) = dword_1400F2740[4 * v91 + 1];
v93 = *(_DWORD *)v12 ^ v112;
v94 = (unsigned __int8)v92;
v92 >>= 8;
BYTE2(v113) = dword_1400F2740[4 * v94 + 1];
BYTE1(v114) = dword_1400F2740[4 * (unsigned __int64)(unsigned __int8)v92 + 1];
LOBYTE(v115) = dword_1400F2740[4 * ((unsigned __int64)v92 >> 8) + 1];
v95 = 0;
if ( v110 )
v95 = *v110;
v96 = v111;
v102 = v93 ^ v95;
sub_140055340(v111, (const __m128i *)&v102, 4ui64);
if ( v87 )
++v87;
v97 = 0;
if ( v87 )
v97 = *v87;
v101 = v113 ^ *(_DWORD *)(v12 + 4) ^ v97;
sub_140055340((__m128i *)((char *)v96 + 4), (const __m128i *)&v101, 4ui64);
if ( v87 )
++v87;
v98 = 0;
if ( v87 )
v98 = *v87;
v107 = v114 ^ *(_DWORD *)(v12 + 8) ^ v98;
sub_140055340((__m128i *)((char *)v96 + 8), (const __m128i *)&v107, 4ui64);
if ( v87 )
++v87;
if ( v87 )
v45 = *v87;
v108 = v115 ^ *(_DWORD *)(v12 + 12) ^ v45;
sub_140055340((__m128i *)((char *)v96 + 12), (const __m128i *)&v108, 4ui64);
return sub_14004FEF0((unsigned __int64)&v100 ^ v116);
}
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
看原图
赞赏
雪币:
留言: