心想事成 发表于 2010-10-22 21:00:16

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;
}

guohegong 发表于 2010-10-22 23:14:51

怎么用

txwwy 发表于 2010-10-23 02:59:06

老大终于出手了

hx99 发表于 2010-10-24 22:49:14

看不懂啊

pxyq 发表于 2010-10-26 12:22:41

我也看不懂,呵呵

chihiro 发表于 2010-10-30 15:07:47

老大,出个教程造福下我们!

yyjpcx 发表于 2010-11-23 16:24:02

本帖最后由 yyjpcx 于 2010-11-23 16:24 编辑

直接出个免验证版功德无量

xxxxxx 发表于 2010-11-23 21:46:43

顶起

丢三落四 发表于 2010-11-24 14:44:32

看的偶眼花花.貌似目前还没有人破解WAYOS呢.

LSHERO 发表于 2010-12-11 01:21:14

BCM版的还是PC版的?

chilonghuang 发表于 2010-12-25 23:27:30

学习一下。

clean 发表于 2010-12-26 23:48:46

额。。是C语言吧?C语言就只会"Hello World!"....:lol

macxie 发表于 2011-1-2 09:36:55

不懂编程没办法。。。破解不了,qos的确强大

yagamixp 发表于 2011-3-23 17:04:12

好东东啊,,就想了我重封装后不能引导,呵呵,加上头文件也不行,原来有算法在里面,,可惜没有写程式的功力,不然写一个封系统用的打包一下就可以用了,,呵呵

西山狼 发表于 2011-5-3 22:43:38

:)老大!直接放个破解版的更实在了!!呵呵!!!
页: [1] 2
查看完整版本: WayOS校验加密文件系统的算法