Сейчас на форуме: tyns777, bezumchik, Lohmaty (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Идентифицировать хеш
Посл.ответ Сообщение

Ранг: 112.9 (ветеран), 186thx
Активность: 0.090.01
Статус: Участник

Создано: 27 января 2019 17:54
· Личное сообщение · #1

Возможно кто-то сталкивался и это какой-то популярный хеш

Code:
  1. __int64 __fastcall HashBuffer(BYTE *buffer, size_t size)
  2. {
  3.   // [COLLAPSED LOCAL DECLARATIONS. PRESS KEYPAD CTRL-"+" TO EXPAND]
  4.  
  5.   v2 = size - 0x2145E233;
  6.   v3 = size;
  7.   v4 = size - 0x2145E233;
  8.   v5 = size - 0x2145E233;
  9.   v6 = buffer;
  10.   if ( buffer & 3 )
  11.   {
  12.     if ( buffer & 1 )
  13.     {
  14.       if ( size > 12 )
  15.       {
  16.         v56 = (((size - 13) * 0xAAAAAAAAAAAAAAABui64 >> 64) >> 3) + 1;
  17.         v3 = -12i64 * v56 + size;
  18.         do
  19.         {
  20.           v57 = ((v6[5] + ((v6[6] + (v6[7] << 8)) << 8)) << 8) + v4 + v6[4];
  21.           v58 = ((v6[9] + ((v6[10] + (v6[11] << 8)) << 8)) << 8) + v2 + v6[8];
  22.           v59 = __ROL4__(v58, 4);
  23.           v60 = *v6;
  24.           v61 = (v6[1] + ((v6[2] + (v6[3] << 8)) << 8)) << 8;
  25.           v6 += 12;
  26.           v62 = v60 + v61 - v58;
  27.           v63 = v57 + v58;
  28.           v64 = (v5 + v62) ^ v59;
  29.           v65 = v57 - v64;
  30.           v66 = v64;
  31.           v67 = v63 + v64;
  32.           v68 = v65 ^ __ROL4__(v66, 6);
  33.           v69 = v63 - v68;
  34.           v70 = v68;
  35.           v71 = v67 + v68;
  36.           v72 = v69 ^ __ROL4__(v70, 8);
  37.           v73 = v67 - v72;
  38.           v74 = v72;
  39.           v75 = v71 + v72;
  40.           v76 = v73 ^ __ROL4__(v74, 16);
  41.           v77 = v71 - v76;
  42.           v78 = __ROR4__(v76, 13);
  43.           v5 = v75 + v76;
  44.           v79 = v77 ^ v78;
  45.           v80 = v75 - v79;
  46.           v81 = __ROL4__(v79, 4);
  47.           v4 = v5 + v79;
  48.           v2 = v80 ^ v81;
  49.           --v56;
  50.         }
  51.         while ( v56 );
  52.       }
  53.       switch ( v3 )
  54.       {
  55.         case 0ui64:
  56.           return v2;
  57.         case 1ui64:
  58.           goto LABEL_47;
  59.         case 2ui64:
  60.           goto LABEL_46;
  61.         case 3ui64:
  62.           goto LABEL_45;
  63.         case 4ui64:
  64.           goto LABEL_44;
  65.         case 5ui64:
  66.           goto LABEL_43;
  67.         case 6ui64:
  68.           goto LABEL_42;
  69.         case 7ui64:
  70.           goto LABEL_41;
  71.         case 8ui64:
  72.           goto LABEL_40;
  73.         case 9ui64:
  74.           goto LABEL_39;
  75.         case 0xAui64:
  76.           goto LABEL_38;
  77.         case 0xBui64:
  78.           break;
  79.         case 0xCui64:
  80.           v2 += v6[11] << 24;
  81.           break;
  82.         default:
  83.           goto LABEL_49;
  84.       }
  85.       v2 += v6[10] << 16;
  86. LABEL_38:
  87.       v2 += v6[9] << 8;
  88. LABEL_39:
  89.       v2 += v6[8];
  90. LABEL_40:
  91.       v4 += v6[7] << 24;
  92. LABEL_41:
  93.       v4 += v6[6] << 16;
  94. LABEL_42:
  95.       v4 += v6[5] << 8;
  96. LABEL_43:
  97.       v4 += v6[4];
  98. LABEL_44:
  99.       v5 += v6[3] << 24;
  100. LABEL_45:
  101.       v5 += v6[2] << 16;
  102. LABEL_46:
  103.       v5 += v6[1] << 8;
  104. LABEL_47:
  105.       v31 = *v6;
  106. LABEL_48:
  107.       v5 += v31;
  108.     }
  109.     else
  110.     {
  111.       if ( size > 0xC )
  112.       {
  113.         v32 = (((size - 13) * 0xAAAAAAAAAAAAAAABui64 >> 64) >> 3) + 1;
  114.         v3 = -12i64 * v32 + size;
  115.         do
  116.         {
  117.           v33 = (*(v6 + 3) << 16) + v4 + *(v6 + 2);
  118.           v34 = (*(v6 + 5) << 16) + v2 + *(v6 + 4);
  119.           v35 = __ROL4__(v34, 4);
  120.           v36 = *v6 + (*(v6 + 1) << 16) - v34;
  121.           v6 += 12;
  122.           v37 = v33 + v34;
  123.           v38 = (v5 + v36) ^ v35;
  124.           v39 = v33 - v38;
  125.           v40 = v38;
  126.           v41 = v37 + v38;
  127.           v42 = v39 ^ __ROL4__(v40, 6);
  128.           v43 = v37 - v42;
  129.           v44 = v42;
  130.           v45 = v41 + v42;
  131.           v46 = v43 ^ __ROL4__(v44, 8);
  132.           v47 = v41 - v46;
  133.           v48 = v46;
  134.           v49 = v45 + v46;
  135.           v50 = v47 ^ __ROL4__(v48, 16);
  136.           v51 = v45 - v50;
  137.           v52 = __ROR4__(v50, 13);
  138.           v5 = v49 + v50;
  139.           v53 = v51 ^ v52;
  140.           v54 = v49 - v53;
  141.           v55 = __ROL4__(v53, 4);
  142.           v4 = v5 + v53;
  143.           v2 = v54 ^ v55;
  144.           --v32;
  145.         }
  146.         while ( v32 );
  147.       }
  148.       switch ( v3 )
  149.       {
  150.         case 0ui64:
  151.           return v2;
  152.         case 1ui64:
  153.           goto LABEL_47;
  154.         case 2ui64:
  155.           goto LABEL_31;
  156.         case 3ui64:
  157.           v5 += v6[2] << 16;
  158. LABEL_31:
  159.           v31 = *v6;
  160.           goto LABEL_48;
  161.         case 4ui64:
  162.           goto LABEL_23;
  163.         case 5ui64:
  164.           v4 += v6[4];
  165.           goto LABEL_23;
  166.         case 6ui64:
  167.           goto LABEL_28;
  168.         case 7ui64:
  169.           v4 += v6[6] << 16;
  170. LABEL_28:
  171.           v4 += *(v6 + 2);
  172.           goto LABEL_23;
  173.         case 8ui64:
  174.           goto LABEL_22;
  175.         case 9ui64:
  176.           v2 += v6[8];
  177.           goto LABEL_22;
  178.         case 0xAui64:
  179.           goto LABEL_25;
  180.         case 0xBui64:
  181.           v2 += v6[10] << 16;
  182. LABEL_25:
  183.           v2 += *(v6 + 4);
  184.           goto LABEL_22;
  185.         case 0xCui64:
  186.           v2 += (*(v6 + 5) << 16) + *(v6 + 4);
  187. LABEL_22:
  188.           v4 += (*(v6 + 3) << 16) + *(v6 + 2);
  189. LABEL_23:
  190.           v5 += (*(v6 + 1) << 16) + *v6;
  191.           break;
  192.         default:
  193.           break;
  194.       }
  195.     }
  196.   }
  197.   else
  198.   {
  199.     if ( size > 0xC )
  200.     {
  201.       v7 = (((size - 13) * 0xAAAAAAAAAAAAAAABui64 >> 64) >> 3) + 1;
  202.       v3 += -12i64 * v7;
  203.       do
  204.       {
  205.         v8 = *(v6 + 2) + v2;
  206.         v9 = *(v6 + 1) + v4;
  207.         v10 = *v6 + v5 - v8;
  208.         v11 = v8;
  209.         v12 = v9 + v8;
  210.         v13 = v10 ^ __ROL4__(v11, 4);
  211.         v6 += 12;
  212.         v14 = v9 - v13;
  213.         v15 = v13;
  214.         v16 = v12 + v13;
  215.         v17 = v14 ^ __ROL4__(v15, 6);
  216.         v18 = v12 - v17;
  217.         v19 = __ROL4__(v17, 8);
  218.         v20 = v16 + v17;
  219.         v21 = v18 ^ v19;
  220.         v22 = v16 - v21;
  221.         v23 = v21;
  222.         v24 = v20 + v21;
  223.         v25 = v22 ^ __ROL4__(v23, 16);
  224.         v26 = v20 - v25;
  225.         v27 = __ROR4__(v25, 13);
  226.         v5 = v24 + v25;
  227.         v28 = v26 ^ v27;
  228.         v29 = v24 - v28;
  229.         v30 = __ROL4__(v28, 4);
  230.         v4 = v5 + v28;
  231.         v2 = v29 ^ v30;
  232.         --v7;
  233.       }
  234.       while ( v7 );
  235.     }
  236.     switch ( v3 )
  237.     {
  238.       case 0ui64:
  239.         return v2;
  240.       case 1ui64:
  241.         goto LABEL_47;
  242.       case 2ui64:
  243.         goto LABEL_31;
  244.       case 3ui64:
  245.         v31 = *v6 & 0xFFFFFF;
  246.         goto LABEL_48;
  247.       case 4ui64:
  248.         goto LABEL_8;
  249.       case 5ui64:
  250.         v4 += v6[4];
  251.         v5 += *v6;
  252.         break;
  253.       case 6ui64:
  254.         v4 += *(v6 + 2);
  255.         v5 += *v6;
  256.         break;
  257.       case 7ui64:
  258.         v4 += *(v6 + 1) & 0xFFFFFF;
  259.         v5 += *v6;
  260.         break;
  261.       case 8ui64:
  262.         goto LABEL_7;
  263.       case 9ui64:
  264.         v4 += *(v6 + 1);
  265.         v2 += v6[8];
  266.         v5 += *v6;
  267.         break;
  268.       case 0xAui64:
  269.         v4 += *(v6 + 1);
  270.         v2 += *(v6 + 4);
  271.         v5 += *v6;
  272.         break;
  273.       case 0xBui64:
  274.         v4 += *(v6 + 1);
  275.         v2 += *(v6 + 2) & 0xFFFFFF;
  276.         v5 += *v6;
  277.         break;
  278.       case 0xCui64:
  279.         v2 += *(v6 + 2);
  280. LABEL_7:
  281.         v4 += *(v6 + 1);
  282. LABEL_8:
  283.         v5 += *v6;
  284.         break;
  285.       default:
  286.         break;
  287.     }
  288.   }
  289. LABEL_49:
  290.   v82 = (v4 ^ v2) - __ROL4__(v4, 14);
  291.   v83 = (v5 ^ v82) - __ROL4__(v82, 11);
  292.   v84 = (v83 ^ v4) - __ROR4__(v83, 7);
  293.   v85 = (v84 ^ v82) - __ROL4__(v84, 16);
  294.   v86 = (((v83 ^ v85) - __ROL4__(v85, 4)) ^ v84) - __ROL4__((v83 ^ v85) - __ROL4__(v85, 4), 14);
  295.   return (v86 ^ v85) - __ROR4__(v86, 8);
  296. }





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 27 января 2019 18:12
· Личное сообщение · #2

https://github.com/AMGarkin/UnPAZ/blob/master/BDO.cpp
https://github.com/kukdh1/PAZ-Unpacker/blob/master/Crypt.cpp

| Сообщение посчитали полезным: vden
 eXeL@B —› Вопросы новичков —› Идентифицировать хеш
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати