WayOS校验加密文件系统的算法
内存文件系统实际上是加密后的ext2文件系统,在解密后由gzip解压,再由系统mountint __cdecl jhlfs_check(unsigned int a1, int a2){
unsigned int v2; // ecx@1
unsigned int v3; // kr00_4@1
char *v4; // edi@3
unsigned int v5; // esi@3
char v6; // al@4
char *v7; // edi@5
unsigned int v8; // esi@5
char v9; // al@6
unsigned int v10; // eax@7
unsigned int v11; // ecx@8
int v12; // esi@9
char *v13; // edx@11
unsigned int v14; // eax@12
unsigned __int8 v15; // cf@13
unsigned __int8 v16; // zf@13
signed int v17; // ecx@13
char *v18; // edi@13
int v19; // esi@13
int v20; // ecx@17
unsigned __int8 v21; // cf@18
unsigned __int8 v22; // zf@18
signed int v23; // ecx@18
int v24; // edi@18
int v25; // esi@18
char v27; // @1
unsigned int v28; // @7
int v29; // @7
unsigned int v30; // @7
unsigned int v31; // @7
unsigned int v32; // @7
unsigned int v33; // @7
char v34; // @11
int v35; // @13
int v36; // @13
int v37; // @13
char v38; // @1
unsigned int v39; // @9
int v40; // @9
char v41; // @13
int v42; // @13
int v43; // @13
int v44; // @13
memset(v38, 0, 0x20u);
v3 = strlen(v27);
v2 = (v3 - 1) >> 2;
memcpy(v38, v27, 4 * v2);
if ( ((_BYTE)v3 - 1) & 3 )
memcpy(&v38, &v27, ((_BYTE)v3 - 1) & 3);
v5 = 0xC0660CFEu;
v4 = v27;
do
{
v6 = *(_BYTE *)v5++;
*v4++ = v6;
}
while ( v6 );
v8 = 0xC0660D12u;
v7 = v27;
xxtea_Encrypt(dword_C07114E0, 64, v38);
do
{
v9 = *(_BYTE *)v8++;
*v7++ = v9;
}
while ( v9 );
xxtea_Decrypt(dword_C07114E0, 64, v38);
v29 = 0;
v28 = 0;
v30 = 0x87452301u;
v31 = 0xCFCDAB89u;
v32 = 0x28BADCFEu;
v33 = 0x30325476u;
jhlfs_MD5Update((int)&v28, a2, 0x200u);
v10 = (v28 >> 3) & 0x3F;
if ( (signed int)v10 > 55 )
v11 = 120 - v10;
else
v11 = 56 - v10;
v39 = v28;
v40 = v29;
jhlfs_MD5Update((int)&v28, -1066330656, v11);
v12 = 0;
do
{
*(_DWORD *)&v38 = *((_BYTE *)&v28 + v12 + 24) | (*((_BYTE *)&v28 + v12 + 26) << 16) | (*((_BYTE *)&v28 + v12 + 27) << 24) | (*((_BYTE *)&v28 + v12 + 25) << 8);
++v12;
}
while ( v12 != 14 );
jhlfs_final((int)&v30, (int)v38);
v13 = &v34;
do
{
v14 = *((_DWORD *)v13 - 20);
*v13 = v14;
v14 >>= 8;
v13 = v14;
v14 >>= 8;
v13 = v14;
v13 = BYTE1(v14);
v13 += 4;
}
while ( v13 != v38 );
memset(&v41, 0, 0x20u);
*(_DWORD *)&v41 = *(_DWORD *)&v34;
v42 = v35;
v43 = v36;
v44 = v37;
v19 = a1 + 4;
xxtea_Decrypt(a1 + 4, 127, &v41);
v17 = 16;
v18 = &v34;
do
{
if ( !v17 )
break;
v15 = *(_BYTE *)v19 < (unsigned __int8)*v18;
v16 = *(_BYTE *)v19++ == *v18++;
--v17;
}
while ( v16 );
v20 = -1;
if ( !(v15 | v16) == v15 )
{
v23 = 492;
v21 = a1 >= 0xFFFFFFEC;
v22 = a1 == -20;
v25 = a1 + 20;
v24 = a2;
do
{
if ( !v23 )
break;
v21 = *(_BYTE *)v25 < *(_BYTE *)v24;
v22 = *(_BYTE *)v25++ == *(_BYTE *)v24++;
--v23;
}
while ( v22 );
v20 = (unsigned int)(char)(!(v21 | v22) - v21) >= 1 ? 0xFFFFFFFE : 0;
}
return v20;
} 怎么用 老大终于出手了 看不懂啊 我也看不懂,呵呵 老大,出个教程造福下我们! 本帖最后由 yyjpcx 于 2010-11-23 16:24 编辑
直接出个免验证版功德无量 顶起 看的偶眼花花.貌似目前还没有人破解WAYOS呢. BCM版的还是PC版的? 学习一下。 额。。是C语言吧?C语言就只会"Hello World!"....:lol 不懂编程没办法。。。破解不了,qos的确强大 好东东啊,,就想了我重封装后不能引导,呵呵,加上头文件也不行,原来有算法在里面,,可惜没有写程式的功力,不然写一个封系统用的打包一下就可以用了,,呵呵 :)老大!直接放个破解版的更实在了!!呵呵!!!
页:
[1]
2