Гайд Базовое обновление, поиск декриптов, оффсетов

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
6 Ноя 2022
Сообщения
138
Реакции
9
для начала в дампе ищем:
"class BaseNetworkable.%" в котором будет чтото подобное:

1759002724073.png


копируем полное название класса, в нашем случае "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e"
ищем "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e_TypeInfo" находим, берем его адрес "219897672"
переводим в hex и переходим в иду
переходим по нашему адресу + get_imagebase()
открываем хревы и выбираем любой попавшейся
перед нами открывается вот такая картина:

1759003024482.png



где 0x40 - нужный наш clientEntities, он находится под криптом, что найти декрипт нужно перейти по сабу левее, в нашем случае sub_180E6DDF0
перейдя по сабу увидем:


1759003196679.png



1 это нужный нам декрипт и ниже il2cpp_get_handle, который нам тоже понадобится, в случае если вы external.
далее нам нужен entityList, который тоже находится под криптом, чтобы получить его, мы возвращаемся в предыдущий саб и ищем где вызывается v13
находим его ниже
1759003737776.png



переходим по сабу sub_184DAEDE0 и сразу же видим v4 = sub_181BC94F0(*(_QWORD *)(a1 + 0x10), qword_18D249660); где 0x10 - и есть криптнутый entityList
тут же находится наш декрипт entityList:


1759003851221.png


далее нам нужно найти буфер листа, сделать это можно, вернуться назад и просто пролистав немного ниже:

1759004298363.png



в итоге list - 0x18
list buffer - 0x10
list size - 0x18

в конце концов мы получаем такой код
итоговый код:
Expand Collapse Copy
uint64_t decrypt_client_entities(uint64_t encrypted)
{
  signed __int64 *v4; // rdx
  int v5; // r8d
  int v6; // eax
  signed __int64 v7; // rcx
  signed __int64 v22;
  v4 = &v22;
  v22 = memory::read<uint64_t>(encrypted + 24);
  v5 = 2;
  do
  {
    v6 = *(_DWORD *)v4;
    v4 = (signed __int64 *)((char *)v4 + 4);
    *((_DWORD *)v4 - 1) = (((v6 - 1544952125) << 14) | ((unsigned int)(v6 - 1544952125) >> 18)) - 1794566037;
    --v5;
  }
  while ( v5 );
  v7 = v22;
  return il2cpp_get_handle(v7);
}
uint64_t decrypt_entities_list(uint64_t encrypted) {
  signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    unsigned int v7; // eax
    signed __int64 v8; // rcx
    signed __int64 v23;

    v4 = &v23;
    v23 = memory::read<uint64_t>(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      v7 = (((v6 - 879541231) << 25) | ((unsigned int)(v6 - 879541231) >> 7)) - 1602652980;
      *((_DWORD *)v4 - 1) = (v7 << 23) | (v7 >> 9);
      --v5;
    }
    while ( v5 );
    v8 = v23;
    return il2cpp_get_handle(v8);
}
uint64_t base_networkable_c = memory::read<uint64_t>(memory::modules::game_assembly + 0xD1B5F48);
uint64_t base_networkable = memory::read<uint64_t>(base_networkable_c + 0xb8);
uint64_t encrypted_client_entities = memory::read<uint64_t>(base_networkable + 0x40);
uint64_t client_entities = decrypt_client_entities(encrypted_client_entities);
uint64_t encrypted_entities_list = memory::read<uint64_t>(client_entities + 0x10);
uint64_t entities_list = decrypt_entitie_list(encrypteds_entitie_list);
uint64_t list = memory::read<uint64_t>(entities_list + 0x18);
uint32_t list_size = memory::read<uint32_t>(list + 0x18);
uint64_t list_buffer = memory::read<uint64_t>(list + 0x10);
for ( int i = 0; i < list_size; i++){
    uint64_t player = memory::read<uint64_t>(list_buffer + 0x20 + ( i * 0x8 ) );
}

берем оффсет (сейчас он 0x490)
переименовываем для удобства крипченное название в <> в ItemID

1759005073635.png


далее переходим к поиску public ItemID % в классе BasePlayer находим любой попавшийся, и переходим по его адресу в иде
зачастую оно выглядит вот так:

1759005161662.png


но моментами там идет отдельным сабом
в итоге получаем:
итоговый код:
Expand Collapse Copy
uint64_t decrypt_cl_active_item( uint64_t encrypted ) {
    int *v3; // rdx
    int v4; // r8d
    int v5; // eax
    __int128 v9;
    v3 = (int *)&v9;
    v4 = 2;
    v9 = encrypted;
    do
    {
      v5 = *v3++;
      *(v3 - 1) = (((v5 - 39167478) << 8) | ((unsigned int)(v5 - 39167478) >> 24)) - 813727899;
      --v4;
    }
    while ( v4 );
    return v9;
}
uint64_t encrypted_cl_active = memory::read<uint64_t>(player + 0x490);
uint64_t decrypted_cl_active = decrypt_cl_active_item(encrypted_cl_active);

для этого можем просто использовать GetComponent или же:
переходим в класс BasePlayer и ищем подобную функцию:

1759005441350.png

берем адрес и прыгаем в иду:
и видем такое:

1759005480403.png


переходим по сабу sub_1812562B0:

1759005530714.png

производим некие манипуляции и получаем:
код:
Expand Collapse Copy
uint64_t decrypt_player_eyes ( uint64_t encrypted ) {
    signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    signed __int64 v7; // rcx
    v4 = &v22;
    v22 = *(_QWORD *)(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      *((_DWORD *)v4 - 1) = (((v6 - 504983963) << 21) | ((unsigned int)(v6 - 504983963) >> 11)) + 1214266128;
      --v5;
    }
    while ( v5 );
    v7 = v22;
    return il2cpp_get_handle(v7);
}
uint64_t encrypted_eyes = memory::read<uint64_t>(player + 0x310);
uint64_t eyes = decrypt_player_eyes(encrypted_eyes);
с PlayerInventory делаем тоже самое

пишу это для тех, кто не знал этого раньше и хотелось бы разбавить данный форум
а так в итоге хочу сказать, впервые пишу вообще какой либо гайд, если гдето ошибся поправляйте <3
 

Вложения

  • 1759005040270.png
    1759005040270.png
    20.1 KB · Просмотры: 99
для начала в дампе ищем:
"class BaseNetworkable.%" в котором будет чтото подобное:

Посмотреть вложение 316629

копируем полное название класса, в нашем случае "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e"
ищем "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e_TypeInfo" находим, берем его адрес "219897672"
переводим в hex и переходим в иду
переходим по нашему адресу + get_imagebase()
открываем хревы и выбираем любой попавшейся
перед нами открывается вот такая картина:

Посмотреть вложение 316630


где 0x40 - нужный наш clientEntities, он находится под криптом, что найти декрипт нужно перейти по сабу левее, в нашем случае sub_180E6DDF0
перейдя по сабу увидем:


Посмотреть вложение 316631


1 это нужный нам декрипт и ниже il2cpp_get_handle, который нам тоже понадобится, в случае если вы external.
далее нам нужен entityList, который тоже находится под криптом, чтобы получить его, мы возвращаемся в предыдущий саб и ищем где вызывается v13
находим его ниже
Посмотреть вложение 316633


переходим по сабу sub_184DAEDE0 и сразу же видим v4 = sub_181BC94F0(*(_QWORD *)(a1 + 0x10), qword_18D249660); где 0x10 - и есть криптнутый entityList
тут же находится наш декрипт entityList:


Посмотреть вложение 316634

далее нам нужно найти буфер листа, сделать это можно, вернуться назад и просто пролистав немного ниже:

Посмотреть вложение 316635


в итоге list - 0x18
list buffer - 0x10
list size - 0x18

в конце концов мы получаем такой код
итоговый код:
Expand Collapse Copy
uint64_t decrypt_client_entities(uint64_t encrypted)
{
  signed __int64 *v4; // rdx
  int v5; // r8d
  int v6; // eax
  signed __int64 v7; // rcx
  signed __int64 v22;
  v4 = &v22;
  v22 = memory::read<uint64_t>(encrypted + 24);
  v5 = 2;
  do
  {
    v6 = *(_DWORD *)v4;
    v4 = (signed __int64 *)((char *)v4 + 4);
    *((_DWORD *)v4 - 1) = (((v6 - 1544952125) << 14) | ((unsigned int)(v6 - 1544952125) >> 18)) - 1794566037;
    --v5;
  }
  while ( v5 );
  v7 = v22;
  return il2cpp_get_handle(v7);
}
uint64_t decrypt_entities_list(uint64_t encrypted) {
  signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    unsigned int v7; // eax
    signed __int64 v8; // rcx
    signed __int64 v23;

    v4 = &v23;
    v23 = memory::read<uint64_t>(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      v7 = (((v6 - 879541231) << 25) | ((unsigned int)(v6 - 879541231) >> 7)) - 1602652980;
      *((_DWORD *)v4 - 1) = (v7 << 23) | (v7 >> 9);
      --v5;
    }
    while ( v5 );
    v8 = v23;
    return il2cpp_get_handle(v8);
}
uint64_t base_networkable_c = memory::read<uint64_t>(memory::modules::game_assembly + 0xD1B5F48);
uint64_t base_networkable = memory::read<uint64_t>(base_networkable_c + 0xb8);
uint64_t encrypted_client_entities = memory::read<uint64_t>(base_networkable + 0x40);
uint64_t client_entities = decrypt_client_entities(encrypted_client_entities);
uint64_t encrypted_entities_list = memory::read<uint64_t>(client_entities + 0x10);
uint64_t entities_list = decrypt_entitie_list(encrypteds_entitie_list);
uint64_t list = memory::read<uint64_t>(entities_list + 0x18);
uint32_t list_size = memory::read<uint32_t>(list + 0x18);
uint64_t list_buffer = memory::read<uint64_t>(list + 0x10);
for ( int i = 0; i < list_size; i++){
    uint64_t player = memory::read<uint64_t>(list_buffer + 0x20 + ( i * 0x8 ) );
}

берем оффсет (сейчас он 0x490)
переименовываем для удобства крипченное название в <> в ItemID

Посмотреть вложение 316637

далее переходим к поиску public ItemID % в классе BasePlayer находим любой попавшийся, и переходим по его адресу в иде
зачастую оно выглядит вот так:

Посмотреть вложение 316638

но моментами там идет отдельным сабом
в итоге получаем:
итоговый код:
Expand Collapse Copy
uint64_t decrypt_cl_active_item( uint64_t encrypted ) {
    int *v3; // rdx
    int v4; // r8d
    int v5; // eax
    __int128 v9;
    v3 = (int *)&v9;
    v4 = 2;
    v9 = encrypted;
    do
    {
      v5 = *v3++;
      *(v3 - 1) = (((v5 - 39167478) << 8) | ((unsigned int)(v5 - 39167478) >> 24)) - 813727899;
      --v4;
    }
    while ( v4 );
    return v9;
}
uint64_t encrypted_cl_active = memory::read<uint64_t>(player + 0x490);
uint64_t decrypted_cl_active = decrypt_cl_active_item(encrypted_cl_active);

для этого можем просто использовать GetComponent или же:
переходим в класс BasePlayer и ищем подобную функцию:

Посмотреть вложение 316639
берем адрес и прыгаем в иду:
и видем такое:

Посмотреть вложение 316640

переходим по сабу sub_1812562B0:

Посмотреть вложение 316641
производим некие манипуляции и получаем:
код:
Expand Collapse Copy
uint64_t decrypt_player_eyes ( uint64_t encrypted ) {
    signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    signed __int64 v7; // rcx
    v4 = &v22;
    v22 = *(_QWORD *)(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      *((_DWORD *)v4 - 1) = (((v6 - 504983963) << 21) | ((unsigned int)(v6 - 504983963) >> 11)) + 1214266128;
      --v5;
    }
    while ( v5 );
    v7 = v22;
    return il2cpp_get_handle(v7);
}
uint64_t encrypted_eyes = memory::read<uint64_t>(player + 0x310);
uint64_t eyes = decrypt_player_eyes(encrypted_eyes);
с PlayerInventory делаем тоже самое

пишу это для тех, кто не знал этого раньше и хотелось бы разбавить данный форум
а так в итоге хочу сказать, впервые пишу вообще какой либо гайд, если гдето ошибся поправляйте <3
ну и хуетень лучше бы рассказывал долбаебам как от декриптов отказываться
да и нахуя ты в целом просто репостнул тред с юц сюда)
 
ну и хуетень лучше бы рассказывал долбаебам как от декриптов отказываться
да и нахуя ты в целом просто репостнул тред с юц сюда)
я ничего не репостил, щас писал сидел
 
я ничего не репостил, щас писал сидел
нахуя ты это писал если есть это
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.
что 1 в 1 описывает то, что ты сейчас сюда запостил. Благослави Господь пиратский пастинг:BlessRNG:
 
не знал, что скуф на юц репостил гайд, а про 2, это было почти год назад, где нужен был 1 декрипт на весь класс
 
нахуя ты это писал если есть это
Пожалуйста, авторизуйтесь для просмотра ссылки.
,
Пожалуйста, авторизуйтесь для просмотра ссылки.
что 1 в 1 описывает то, что ты сейчас сюда запостил. Благослави Господь пиратский пастинг:BlessRNG:
вот именно, что описывает там (uc, noad), а не тут. твой аргумент, что это это скопировал сюда смысла не несёт. были люди, которые задавали вопрос про декрипт - этот гайд на этом же форуме ответит на их вопрос. этот форум для создания и покупки читов, а не список аргументов, почему какой-то из постов не должен тут находиться.

а теперь вопрос нахуя тебе декрипты в интернале
так сделай гайд и расскажи как сделать без декриптов. но ты же в 99% случаев ты так не сделаешь. тогда к тебе встречный вопрос, зачем ты пишешь что-то на этом форуме? думаешь от тебя больше пользы, чем от этого гайда?
 
вот именно, что описывает там (uc, noad), а не тут. твой аргумент, что это это скопировал сюда смысла не несёт. были люди, которые задавали вопрос про декрипт - этот гайд на этом же форуме ответит на их вопрос. этот форум для создания и покупки читов, а не список аргументов, почему какой-то из постов не должен тут находиться.
ладно, ты прав)
 
ну и хуетень лучше бы рассказывал долбаебам как от декриптов отказываться
да и нахуя ты в целом просто репостнул тред с юц сюда)
Ну да, а людям особенно на югейме делать нехуй, все сидят думают как без декриптов чит слепить, ты можешь с таким вопросом пойти на юц, хули они каждый апдейт треды засирают своими оффсетами
Тут скорее всего многие обитатели данного форума даже не ебали как оно устроено, они даже без обфускации чит обновить не могут, тут паблик сурсами и функциями выёбываются о чем речь вообще
Доёб у тебя странный, нет ну можно и через сцену всё это искать, хукать всё подряд и функции переделать с игры, но кому оно нужно, декрипт найти проще, в конечном итоге просто скрипт написать который их найдёт
 
Ну да, а людям особенно на югейме делать нехуй, все сидят думают как без декриптов чит слепить, ты можешь с таким вопросом пойти на юц, хули они каждый апдейт треды засирают своими оффсетами
Тут скорее всего многие обитатели данного форума даже не ебали как оно устроено, они даже без обфускации чит обновить не могут, тут паблик сурсами и функциями выёбываются о чем речь вообще
Доёб у тебя странный, нет ну можно и через сцену всё это искать, хукать всё подряд и функции переделать с игры, но кому оно нужно, декрипт найти проще, в конечном итоге просто скрипт написать который их найдёт
согласен, что может находить их и легче чем автоматизировать, тут скорее, как ты качественно относишься к своему продукту, на похуй или нет
 
для начала в дампе ищем:
"class BaseNetworkable.%" в котором будет чтото подобное:

Посмотреть вложение 316629

копируем полное название класса, в нашем случае "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e"
ищем "BaseNetworkable.%b6e7495bc2868ce199b342d4aec0a2483c23de6e_TypeInfo" находим, берем его адрес "219897672"
переводим в hex и переходим в иду
переходим по нашему адресу + get_imagebase()
открываем хревы и выбираем любой попавшейся
перед нами открывается вот такая картина:

Посмотреть вложение 316630


где 0x40 - нужный наш clientEntities, он находится под криптом, что найти декрипт нужно перейти по сабу левее, в нашем случае sub_180E6DDF0
перейдя по сабу увидем:


Посмотреть вложение 316631


1 это нужный нам декрипт и ниже il2cpp_get_handle, который нам тоже понадобится, в случае если вы external.
далее нам нужен entityList, который тоже находится под криптом, чтобы получить его, мы возвращаемся в предыдущий саб и ищем где вызывается v13
находим его ниже
Посмотреть вложение 316633


переходим по сабу sub_184DAEDE0 и сразу же видим v4 = sub_181BC94F0(*(_QWORD *)(a1 + 0x10), qword_18D249660); где 0x10 - и есть криптнутый entityList
тут же находится наш декрипт entityList:


Посмотреть вложение 316634

далее нам нужно найти буфер листа, сделать это можно, вернуться назад и просто пролистав немного ниже:

Посмотреть вложение 316635


в итоге list - 0x18
list buffer - 0x10
list size - 0x18

в конце концов мы получаем такой код
итоговый код:
Expand Collapse Copy
uint64_t decrypt_client_entities(uint64_t encrypted)
{
  signed __int64 *v4; // rdx
  int v5; // r8d
  int v6; // eax
  signed __int64 v7; // rcx
  signed __int64 v22;
  v4 = &v22;
  v22 = memory::read<uint64_t>(encrypted + 24);
  v5 = 2;
  do
  {
    v6 = *(_DWORD *)v4;
    v4 = (signed __int64 *)((char *)v4 + 4);
    *((_DWORD *)v4 - 1) = (((v6 - 1544952125) << 14) | ((unsigned int)(v6 - 1544952125) >> 18)) - 1794566037;
    --v5;
  }
  while ( v5 );
  v7 = v22;
  return il2cpp_get_handle(v7);
}
uint64_t decrypt_entities_list(uint64_t encrypted) {
  signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    unsigned int v7; // eax
    signed __int64 v8; // rcx
    signed __int64 v23;

    v4 = &v23;
    v23 = memory::read<uint64_t>(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      v7 = (((v6 - 879541231) << 25) | ((unsigned int)(v6 - 879541231) >> 7)) - 1602652980;
      *((_DWORD *)v4 - 1) = (v7 << 23) | (v7 >> 9);
      --v5;
    }
    while ( v5 );
    v8 = v23;
    return il2cpp_get_handle(v8);
}
uint64_t base_networkable_c = memory::read<uint64_t>(memory::modules::game_assembly + 0xD1B5F48);
uint64_t base_networkable = memory::read<uint64_t>(base_networkable_c + 0xb8);
uint64_t encrypted_client_entities = memory::read<uint64_t>(base_networkable + 0x40);
uint64_t client_entities = decrypt_client_entities(encrypted_client_entities);
uint64_t encrypted_entities_list = memory::read<uint64_t>(client_entities + 0x10);
uint64_t entities_list = decrypt_entitie_list(encrypteds_entitie_list);
uint64_t list = memory::read<uint64_t>(entities_list + 0x18);
uint32_t list_size = memory::read<uint32_t>(list + 0x18);
uint64_t list_buffer = memory::read<uint64_t>(list + 0x10);
for ( int i = 0; i < list_size; i++){
    uint64_t player = memory::read<uint64_t>(list_buffer + 0x20 + ( i * 0x8 ) );
}

берем оффсет (сейчас он 0x490)
переименовываем для удобства крипченное название в <> в ItemID

Посмотреть вложение 316637

далее переходим к поиску public ItemID % в классе BasePlayer находим любой попавшийся, и переходим по его адресу в иде
зачастую оно выглядит вот так:

Посмотреть вложение 316638

но моментами там идет отдельным сабом
в итоге получаем:
итоговый код:
Expand Collapse Copy
uint64_t decrypt_cl_active_item( uint64_t encrypted ) {
    int *v3; // rdx
    int v4; // r8d
    int v5; // eax
    __int128 v9;
    v3 = (int *)&v9;
    v4 = 2;
    v9 = encrypted;
    do
    {
      v5 = *v3++;
      *(v3 - 1) = (((v5 - 39167478) << 8) | ((unsigned int)(v5 - 39167478) >> 24)) - 813727899;
      --v4;
    }
    while ( v4 );
    return v9;
}
uint64_t encrypted_cl_active = memory::read<uint64_t>(player + 0x490);
uint64_t decrypted_cl_active = decrypt_cl_active_item(encrypted_cl_active);

для этого можем просто использовать GetComponent или же:
переходим в класс BasePlayer и ищем подобную функцию:

Посмотреть вложение 316639
берем адрес и прыгаем в иду:
и видем такое:

Посмотреть вложение 316640

переходим по сабу sub_1812562B0:

Посмотреть вложение 316641
производим некие манипуляции и получаем:
код:
Expand Collapse Copy
uint64_t decrypt_player_eyes ( uint64_t encrypted ) {
    signed __int64 *v4; // rdx
    int v5; // r8d
    int v6; // eax
    signed __int64 v7; // rcx
    v4 = &v22;
    v22 = *(_QWORD *)(encrypted + 24);
    v5 = 2;
    do
    {
      v6 = *(_DWORD *)v4;
      v4 = (signed __int64 *)((char *)v4 + 4);
      *((_DWORD *)v4 - 1) = (((v6 - 504983963) << 21) | ((unsigned int)(v6 - 504983963) >> 11)) + 1214266128;
      --v5;
    }
    while ( v5 );
    v7 = v22;
    return il2cpp_get_handle(v7);
}
uint64_t encrypted_eyes = memory::read<uint64_t>(player + 0x310);
uint64_t eyes = decrypt_player_eyes(encrypted_eyes);
с PlayerInventory делаем тоже самое

пишу это для тех, кто не знал этого раньше и хотелось бы разбавить данный форум
а так в итоге хочу сказать, впервые пишу вообще какой либо гайд, если гдето ошибся поправляйте <3
можешь подсказать, как находить оффсет на il2cppgethandle?
 
согласен, что может находить их и легче чем автоматизировать, тут скорее, как ты качественно относишься к своему продукту, на похуй или нет
а в чём проблема автоматизировать поиск оффсетов и декриптов?
 
Привет я следовал туториалу до момента <переходим по нашему адресу + get_imagebase()>потом меня перекинуло на .data:000000018D482CD0 .db 0xF1 не могу понять все попробовал нажать X,F5 не че не происходит заходил на UC no ad и все равно там тоже самое без объяснения можешь сказать что дальше делать я вообще 0 в этом деле без негатива
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
а в чём проблема автоматизировать поиск оффсетов и декриптов?
если у тебя экстернал нет проблем в автоматизации декриптов и прочего, на юц уже давно кучу примеров этому через зидис
 
если у тебя экстернал нет проблем в автоматизации декриптов и прочего, на юц уже давно кучу примеров этому через зидис
Ну так с интернолом тоже проблем не будет :/
 
Ну так с интернолом тоже проблем не будет :/
бля сука нахуй ты мне это обьяснешь вначале говоришь про экстернал, я тебе говорю, что это все так же можно автоматизировать, а потом ты мне говоришь, что для интернала тоже, но вот вопрос нахуя тебе в интернале декрипты если лучше использовать игровые функции?
 
бля сука нахуй ты мне это обьяснешь вначале говоришь про экстернал, я тебе говорю, что это все так же можно автоматизировать, а потом ты мне говоришь, что для интернала тоже, но вот вопрос нахуя тебе в интернале декрипты если лучше использовать игровые функции?
так ты расскажи в чём польза? всё одно и тоже будет и декрипты делать быстрее чем сидеть через сцену гетать всё что тебе нужно
 
так ты расскажи в чём польза? всё одно и тоже будет и декрипты делать быстрее чем сидеть через сцену гетать всё что тебе нужно
а нахуя тебе из интернал чита делать экстернал чит, когда у тебя больше возможностей все автоматизировать? С такой логикой ты каждый апдейт, каждый оффсет, что есть будешь руками обновлять
 
Назад
Сверху Снизу