找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 19540|回复: 16

[wayos] WayOS校验加密文件系统的算法

  [复制链接]
发表于 2010-10-22 21:00:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
内存文件系统实际上是加密后的ext2文件系统,在解密后由gzip解压,再由系统mount
  1. int __cdecl jhlfs_check(unsigned int a1, int a2)
  2. {
  3.   unsigned int v2; // ecx@1
  4.   unsigned int v3; // kr00_4@1
  5.   char *v4; // edi@3
  6.   unsigned int v5; // esi@3
  7.   char v6; // al@4
  8.   char *v7; // edi@5
  9.   unsigned int v8; // esi@5
  10.   char v9; // al@6
  11.   unsigned int v10; // eax@7
  12.   unsigned int v11; // ecx@8
  13.   int v12; // esi@9
  14.   char *v13; // edx@11
  15.   unsigned int v14; // eax@12
  16.   unsigned __int8 v15; // cf@13
  17.   unsigned __int8 v16; // zf@13
  18.   signed int v17; // ecx@13
  19.   char *v18; // edi@13
  20.   int v19; // esi@13
  21.   int v20; // ecx@17
  22.   unsigned __int8 v21; // cf@18
  23.   unsigned __int8 v22; // zf@18
  24.   signed int v23; // ecx@18
  25.   int v24; // edi@18
  26.   int v25; // esi@18
  27.   char v27[128]; // [sp+Ch] [bp-158h]@1
  28.   unsigned int v28; // [sp+8Ch] [bp-D8h]@7
  29.   int v29; // [sp+90h] [bp-D4h]@7
  30.   unsigned int v30; // [sp+94h] [bp-D0h]@7
  31.   unsigned int v31; // [sp+98h] [bp-CCh]@7
  32.   unsigned int v32; // [sp+9Ch] [bp-C8h]@7
  33.   unsigned int v33; // [sp+A0h] [bp-C4h]@7
  34.   char v34; // [sp+E4h] [bp-80h]@11
  35.   int v35; // [sp+E8h] [bp-7Ch]@13
  36.   int v36; // [sp+ECh] [bp-78h]@13
  37.   int v37; // [sp+F0h] [bp-74h]@13
  38.   char v38[56]; // [sp+F4h] [bp-70h]@1
  39.   unsigned int v39; // [sp+12Ch] [bp-38h]@9
  40.   int v40; // [sp+130h] [bp-34h]@9
  41.   char v41; // [sp+134h] [bp-30h]@13
  42.   int v42; // [sp+138h] [bp-2Ch]@13
  43.   int v43; // [sp+13Ch] [bp-28h]@13
  44.   int v44; // [sp+140h] [bp-24h]@13

  45.   memset(v38, 0, 0x20u);
  46.   v3 = strlen(v27);
  47.   v2 = (v3 - 1) >> 2;
  48.   memcpy(v38, v27, 4 * v2);
  49.   if ( ((_BYTE)v3 - 1) & 3 )
  50.     memcpy(&v38[4 * v2], &v27[4 * v2], ((_BYTE)v3 - 1) & 3);
  51.   v5 = 0xC0660CFEu;
  52.   v4 = v27;
  53.   do
  54.   {
  55.     v6 = *(_BYTE *)v5++;
  56.     *v4++ = v6;
  57.   }
  58.   while ( v6 );
  59.   v8 = 0xC0660D12u;
  60.   v7 = v27;
  61.   xxtea_Encrypt(dword_C07114E0, 64, v38);
  62.   do
  63.   {
  64.     v9 = *(_BYTE *)v8++;
  65.     *v7++ = v9;
  66.   }
  67.   while ( v9 );
  68.   xxtea_Decrypt(dword_C07114E0, 64, v38);
  69.   v29 = 0;
  70.   v28 = 0;
  71.   v30 = 0x87452301u;
  72.   v31 = 0xCFCDAB89u;
  73.   v32 = 0x28BADCFEu;
  74.   v33 = 0x30325476u;
  75.   jhlfs_MD5Update((int)&v28, a2, 0x200u);
  76.   v10 = (v28 >> 3) & 0x3F;
  77.   if ( (signed int)v10 > 55 )
  78.     v11 = 120 - v10;
  79.   else
  80.     v11 = 56 - v10;
  81.   v39 = v28;
  82.   v40 = v29;
  83.   jhlfs_MD5Update((int)&v28, -1066330656, v11);
  84.   v12 = 0;
  85.   do
  86.   {
  87.     *(_DWORD *)&v38[4 * v12] = *((_BYTE *)&v28 + v12 + 24) | (*((_BYTE *)&v28 + v12 + 26) << 16) | (*((_BYTE *)&v28 + v12 + 27) << 24) | (*((_BYTE *)&v28 + v12 + 25) << 8);
  88.     ++v12;
  89.   }
  90.   while ( v12 != 14 );
  91.   jhlfs_final((int)&v30, (int)v38);
  92.   v13 = &v34;
  93.   do
  94.   {
  95.     v14 = *((_DWORD *)v13 - 20);
  96.     *v13 = v14;
  97.     v14 >>= 8;
  98.     v13[1] = v14;
  99.     v14 >>= 8;
  100.     v13[2] = v14;
  101.     v13[3] = BYTE1(v14);
  102.     v13 += 4;
  103.   }
  104.   while ( v13 != v38 );
  105.   memset(&v41, 0, 0x20u);
  106.   *(_DWORD *)&v41 = *(_DWORD *)&v34;
  107.   v42 = v35;
  108.   v43 = v36;
  109.   v44 = v37;
  110.   v19 = a1 + 4;
  111.   xxtea_Decrypt(a1 + 4, 127, &v41);
  112.   v17 = 16;
  113.   v18 = &v34;
  114.   do
  115.   {
  116.     if ( !v17 )
  117.       break;
  118.     v15 = *(_BYTE *)v19 < (unsigned __int8)*v18;
  119.     v16 = *(_BYTE *)v19++ == *v18++;
  120.     --v17;
  121.   }
  122.   while ( v16 );
  123.   v20 = -1;
  124.   if ( !(v15 | v16) == v15 )
  125.   {
  126.     v23 = 492;
  127.     v21 = a1 >= 0xFFFFFFEC;
  128.     v22 = a1 == -20;
  129.     v25 = a1 + 20;
  130.     v24 = a2;
  131.     do
  132.     {
  133.       if ( !v23 )
  134.         break;
  135.       v21 = *(_BYTE *)v25 < *(_BYTE *)v24;
  136.       v22 = *(_BYTE *)v25++ == *(_BYTE *)v24++;
  137.       --v23;
  138.     }
  139.     while ( v22 );
  140.     v20 = (unsigned int)(char)(!(v21 | v22) - v21) >= 1 ? 0xFFFFFFFE : 0;
  141.   }
  142.   return v20;
  143. }
复制代码
routeros
发表于 2010-10-22 23:14:51 | 显示全部楼层
怎么用
routeros
回复

使用道具 举报

发表于 2010-10-23 02:59:06 | 显示全部楼层
老大终于出手了
routeros
回复

使用道具 举报

发表于 2010-10-24 22:49:14 | 显示全部楼层
看不懂啊
routeros
回复

使用道具 举报

发表于 2010-10-26 12:22:41 | 显示全部楼层
我也看不懂,呵呵
routeros
回复

使用道具 举报

发表于 2010-10-30 15:07:47 | 显示全部楼层
老大,出个教程造福下我们!
routeros
回复

使用道具 举报

发表于 2010-11-23 16:24:02 | 显示全部楼层
本帖最后由 yyjpcx 于 2010-11-23 16:24 编辑

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

使用道具 举报

发表于 2010-11-23 21:46:43 | 显示全部楼层
顶起
routeros
回复

使用道具 举报

发表于 2010-11-24 14:44:32 | 显示全部楼层
看的偶眼花花.貌似目前还没有人破解WAYOS呢.
routeros
回复

使用道具 举报

发表于 2010-12-11 01:21:14 | 显示全部楼层
BCM版的还是PC版的?
routeros
回复

使用道具 举报

发表于 2010-12-25 23:27:30 | 显示全部楼层
学习一下。
routeros
回复

使用道具 举报

发表于 2010-12-26 23:48:46 | 显示全部楼层
额。。是C语言吧?C语言就只会"Hello World!"....
routeros
回复

使用道具 举报

发表于 2011-1-2 09:36:55 | 显示全部楼层
不懂编程没办法。。。破解不了,qos的确强大
routeros
回复

使用道具 举报

发表于 2011-3-23 17:04:12 | 显示全部楼层
好东东啊,,就想了我重封装后不能引导,呵呵,加上头文件也不行,原来有算法在里面,,可惜没有写程式的功力,不然写一个封系统用的打包一下就可以用了,,呵呵
routeros
回复

使用道具 举报

发表于 2011-5-3 22:43:38 | 显示全部楼层
老大!直接放个破解版的更实在了!!呵呵!!!
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-2 12:04 , Processed in 0.094268 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表