Advertisement
Guest User

GTAV PC HASH -> XBLToothPik

a guest
Apr 30th, 2015
507
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.88 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. using namespace std;
  4.  
  5.  
  6. typedef unsigned int DWORD;
  7. typedef unsigned char BYTE;
  8. __int64 __fastcall GetUnk(__int64 a1, unsigned __int64 a2, unsigned int a3)//data*, len, salt
  9. {
  10.     unsigned __int64 v3; // r9@1
  11.     __int64 result; // rax@1
  12.     int v5; // er8@2
  13.  
  14.     v3 = 0;
  15.     result = a3;
  16.     if (a2)
  17.     {
  18.         do
  19.         {
  20.             v5 = *(BYTE *)(v3++ + a1);
  21.             result = ((unsigned int)(1025 * (v5 + result)) >> 6) ^ 1025 * (v5 + (DWORD)result);
  22.         } while (v3 < a2);
  23.     }
  24.     return result;
  25. }
  26. __int64 __fastcall GetHash2(unsigned __int8 *a1, unsigned int a2)//data*, salt
  27. {
  28.     BYTE* _indexes = new BYTE[256];
  29.     for (int i = 0; i < 255; i++)
  30.         _indexes[i] = i;
  31.     unsigned int v2; // er10@1
  32.     unsigned int v3; // er8@1
  33.     unsigned __int8 *v4; // r9@1
  34.     signed __int64 v5; // r9@3
  35.     unsigned __int8 i; // al@3
  36.     unsigned int v7; // er8@5
  37.     int j; // eax@8
  38.     __int64 v9; // rax@9
  39.     unsigned int v10; // er8@9
  40.     unsigned int v11; // edx@9
  41.     unsigned int v12; // er8@12
  42.     unsigned __int8 v13; // al@13
  43.  
  44.     v2 = 0;
  45.     v3 = a2;
  46.     v4 = a1;
  47.     if (a1)
  48.     {
  49.         if (*a1 == 34)
  50.         {
  51.             v5 = (signed __int64)(a1 + 1);
  52.             for (i = a1[1]; *(BYTE *)v5; i = *(BYTE *)v5)
  53.             {
  54.                 if (i == 34)
  55.                     break;
  56.                 ++v5;
  57.                 v7 = 1025 * (_indexes[i] + v3);
  58.                 v3 = (v7 >> 6) ^ v7;
  59.             }
  60.         }
  61.         else
  62.         {
  63.             if (!((unsigned __int8)a1 & 3))
  64.             {
  65.                 for (j = *(DWORD *)a1; !((j - 16843009) & 0x80808080); j = *(DWORD *)v4)
  66.                 {
  67.                     v9 = *v4;
  68.                     v4 += 4;
  69.                     v10 = 1025 * (_indexes[v9] + v3);
  70.                     v11 = 1025
  71.                         * ((1025 * ((v10 ^ (v10 >> 6)) + _indexes[*(v4 - 3)]) ^ (1025
  72.                         * ((v10 ^ (v10 >> 6))
  73.                         + _indexes[*(v4 - 3)]) >> 6))
  74.                         + _indexes[*(v4 - 2)]);
  75.                     v3 = (1025 * ((v11 ^ (v11 >> 6)) + _indexes[*(v4 - 1)]) >> 6) ^ 1025
  76.                         * ((v11 ^ (v11 >> 6))
  77.                         + _indexes[*(v4 - 1)]);
  78.                 }
  79.             }
  80.             while (1)
  81.             {
  82.                 v13 = *v4;
  83.                 if (!*v4)
  84.                     break;
  85.                 ++v4;
  86.                 v12 = 1025 * (_indexes[v13] + v3);
  87.                 v3 = (v12 >> 6) ^ v12;
  88.             }
  89.         }
  90.         v2 = v3;
  91.     }
  92.     return v2;
  93. }
  94.  
  95. __int64 GetHash(unsigned __int8 *data, unsigned int salt)//data*, salt
  96. {
  97.     BYTE* _indexes = new BYTE[256];
  98.     for (int i = 0; i < 255; i++)
  99.         _indexes[i] = i;
  100.     unsigned int v2; // er10@1
  101.     unsigned int v3; // er8@1
  102.     unsigned __int8 *v4; // r9@1
  103.     signed __int64 v5; // r9@3
  104.     unsigned __int8 i; // al@3
  105.     unsigned int v7; // er8@5
  106.     int j; // eax@8
  107.     __int64 v9; // rax@9
  108.     unsigned int v10; // er8@9
  109.     unsigned int v11; // edx@9
  110.     unsigned int v12; // er8@12
  111.     unsigned __int8 v13; // al@13
  112.  
  113.     v2 = 0;
  114.     v3 = salt;
  115.     v4 = data;
  116.     if (data)
  117.     {
  118.         if (*data == 34)
  119.         {
  120.             v5 = (signed __int64)(data + 1);
  121.             for (i = data[1]; *(BYTE *)v5; i = *(BYTE *)v5)
  122.             {
  123.                 if (i == 34)
  124.                     break;
  125.                 ++v5;
  126.                 v7 = 1025 * (_indexes[i] + v3);
  127.                 v3 = (v7 >> 6) ^ v7;
  128.             }
  129.         }
  130.         else
  131.         {
  132.             if (!((unsigned __int8)data & 3))
  133.             {
  134.                 for (j = *(DWORD *)data; !((j - 16843009) & 0x80808080); j = *(DWORD *)v4)
  135.                 {
  136.                     v9 = *v4;
  137.                     v4 += 4;
  138.                     v10 = 1025 * (_indexes[v9] + v3);
  139.                     v11 = 1025
  140.                         * ((1025 * ((v10 ^ (v10 >> 6)) + _indexes[*(v4 - 3)]) ^ (1025
  141.                         * ((v10 ^ (v10 >> 6))
  142.                         + _indexes[*(v4 - 3)]) >> 6))
  143.                         + _indexes[*(v4 - 2)]);
  144.                     v3 = (1025 * ((v11 ^ (v11 >> 6)) + _indexes[*(v4 - 1)]) >> 6) ^ 1025
  145.                         * ((v11 ^ (v11 >> 6))
  146.                         + _indexes[*(v4 - 1)]);
  147.                 }
  148.             }
  149.             while (1)
  150.             {
  151.                 v13 = *v4;
  152.                 if (!*v4)
  153.                     break;
  154.                 ++v4;
  155.                 v12 = 1025 * (_indexes[v13] + v3);
  156.                 v3 = (v12 >> 6) ^ v12;
  157.             }
  158.         }
  159.         v2 = v3;
  160.     }
  161.     return 32769 * ((9 * v2 >> 11) ^ 9 * v2);
  162. }
  163.  
  164. int _tmain(int argc, _TCHAR* argv[])
  165. {
  166.     char* _newText = "CREATE_VEHICLE";
  167.     __int64 _result = GetHash2((unsigned char*)_newText, 0);
  168. //  __int64 _result2 = GetHash((unsigned char*)_newText, 0);
  169.     __int64 _result3 = GetUnk((long long)_newText, 14, 0);
  170.  
  171.     printf("%X8\r\n", _result);
  172. //  printf("%X8\r\n", _result2);
  173.     printf("%X8\r\n", _result3);
  174.     system("pause");
  175.  
  176.     return 0;
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement