首页
社区
课程
招聘
[求助]请问这个像什么加密算法
2019-5-30 22:14 6931

[求助]请问这个像什么加密算法

2019-5-30 22:14
6931
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);
}

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回