看了半天没看出啥,然后下个断点动调了一下,发现居然还是个SMC自解密
if ( v28 == 32 )
{
v37 = -1173078761;
v38 = 494076752;
v39 = -1811652486;
v40 = 688582768;
v8 = 0;
v32 = 0i64;
v34 = 0;
v33 = 0i64;
v9 = strlen(v35);
do
{
v10 = Block;
if ( v29 >= 0x10 )
v10 = (void **)Block[0];
*((_BYTE *)v10 + v8) ^= v35[v8 % v9];
++v8;
}
while ( v8 < 32 );
v11 = (__int128 *)Block;
v7 = (char *)Block[0];
if ( v29 >= 0x10 )
v11 = (__int128 *)Block[0];
v31 = 0;
memset(v30, 0, sizeof(v30));
v32 = *v11;
v33 = v11[1];
sub_9625C0(v25, v26, 256, (unsigned int)&v32, (unsigned int)v30); //加密结果存入到v30中
v36[0] = -133220429;
v36[1] = 1571732668;
v12 = v36;
v36[2] = -2041750854;
v13 = v30;
v36[3] = -748513468;
v14 = 28;
v37 = 371505743;
v38 = 443719435;
v39 = 644704357;
v40 = 1741188026;
while ( 1 )
{
v15 = *v12;
if ( *v12 != *(_DWORD *)v13 ) //比较
break;
++v12;
v13 = (__int128 *)((char *)v13 + 4);
v17 = v14 < 4;
v14 -= 4;
if ( v17 )
{
v16 = 0;
goto LABEL_19;
}
}
v17 = (unsigned __int8)v15 < *(_BYTE *)v13;
if