Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Гайд №1 BaseNetworkable - Поиск необходимого для создания экстернал чита на официальный Rust

Ты не доказываешь, почему выбираешь именно этот EntityRealm
ты пьяный или что. в гайде всё есть. поставь бряк на каждый и пойми что остальные нигде не заюзаны и лежат чисто по приколу. чатгпт монстр бля
 
ты пьяный или что. в гайде всё есть. поставь бряк на каждый и пойми что остальные нигде не заюзаны и лежат чисто по приколу. чатгпт монстр бля
Окей, принимаю — ты прав, я это место недооценил.

Для контекста (про Rust):

👉 В твоём гайде критерий выбора realm’а реально есть
ты его даёшь через практический приём:

брейк на каждый accessor / дешифратор → смотришь, какой реально вызывается в рантайме, остальные мёртвые.

Это валидный и, по факту, самый надёжный способ в такой обфускации.

Моя претензия была не к логике, а к формулировке:
ты это подаёшь как «само собой разумеется», без явного акцента, что:

именно runtime-валидация через бряки — это и есть способ отличить нужный realm.
Если коротко:

Метод правильный. Просто в гайде он не выделен как ключевой шаг, а выглядит как очевидность для своих.
к слову, если говорить без приколов, то мне чтобы получить чистый код без скрипта легче всего будет просто создать новую вкладку для иды и просто перейти по паттерну на саб? или можно выключить этот скрипт
 
если говорить без приколов
прикольный прикол, бесит всех блять твой гпт. почему нельзя было просто задать мне вопрос в теме/лс форума/статье если тебе что-то непонятно или не понравилось ну напиши с негативом, но можно без нейросетей

перейти по паттерну
зачем паттерн когда у тебя одинаковые файлы открыты? по rva переходи

или можно выключить этот скрипт
ну если тебе не нравится instance->field вид и ты хочешь явно видеть оффсет, то пкм на instance -> “reset pointer type”
 
Окей, принимаю — ты прав, я это место недооценил.

Для контекста (про Rust):

👉 В твоём гайде критерий выбора realm’а реально есть
ты его даёшь через практический приём:

брейк на каждый accessor / дешифратор → смотришь, какой реально вызывается в рантайме, остальные мёртвые.

Это валидный и, по факту, самый надёжный способ в такой обфускации.

Моя претензия была не к логике, а к формулировке:
ты это подаёшь как «само собой разумеется», без явного акцента, что:


Если коротко:

Метод правильный. Просто в гайде он не выделен как ключевой шаг, а выглядит как очевидность для своих.
к слову, если говорить без приколов, то мне чтобы получить чистый код без скрипта легче всего будет просто создать новую вкладку для иды и просто перейти по паттерну на саб? или можно выключить этот скрипт
Как же бесят такие нейроакки подобные тебе.
 
Как же бесят такие нейроакки подобные тебе.
Понимаю.
И да — тут моя ошибка: я реально прочитал твой приём с бряками как «очевидный шаг», а не как ключевой критерий, и из-за этого выглядело так, будто я докапываюсь до того, что у тебя уже есть.


Сорян.
Ты описал нормальный, рабочий способ — через runtime-валидацию, а не гадание по дампу.
Моя формулировка была тупо неаккуратной.
прикольный прикол, бесит всех блять твой гпт. почему нельзя было просто задать мне вопрос в теме/лс форума/статье если тебе что-то непонятно или не понравилось ну напиши с негативом, но можно без нейросетей


зачем паттерн когда у тебя одинаковые файлы открыты? по rva переходи


ну если тебе не нравится instance->field вид и ты хочешь явно видеть оффсет, то пкм на instance -> “reset pointer type”
в этом и вся суть, данной хуетой мега просто забайтить челика, насчет совета, спасибо помог
 
Понимаю.
И да — тут моя ошибка: я реально прочитал твой приём с бряками как «очевидный шаг», а не как ключевой критерий, и из-за этого выглядело так, будто я докапываюсь до того, что у тебя уже есть.


Сорян.
Ты описал нормальный, рабочий способ — через runtime-валидацию, а не гадание по дампу.
Моя формулировка была тупо неаккуратной.

в этом и вся суть, данной хуетой мега просто забайтить челика, насчет совета, спасибо помог
такое мне нравится <3
1772059431609.png
 
хелп, у меня получилось чёт типо такого

sss:
Expand Collapse Copy
    uintptr_t client_entity(__int64 a1, uintptr_t a2, __int64 a3)
    {
        uint32_t v5, v6;
        uintptr_t v3, v7, v28, v29;

        v3 = a2;

        if (driver.read<UCHAR>(a1 + 16))
        {
            a2 = v28;
            v28 = driver.read<uintptr_t>(a1 + 24);
            a3 = 2;
            do {
                v5 = *(ULONG*)a2;
                a2 += 4LL;
                v6 = ((16 * (v5 - 1146544416)) | ((unsigned int)(v5 - 1146544416) >> 28)) ^ 0x7DF13224;
                *(ULONG*)(a2 - 4) = (v6 << 17) | (v6 >> 15);
                a3 = (unsigned int)(a3 - 1);
            } while ((ULONG)a3);
            v7 = v28;
        }
        else
        {
            v7 = 0;
        }
        v29 = v7;
        if (!v7)
            return 0;
        return Il2cppGetHandle(v7);
}

разве и должно быть 3 параметра в функции? или я чёт не так делаю
хелп, у меня получилось чёт типо такого

sss:
Expand Collapse Copy
    uintptr_t client_entity(__int64 a1, uintptr_t a2, __int64 a3)
    {
        uint32_t v5, v6;
        uintptr_t v3, v7, v28, v29;

        v3 = a2;

        if (driver.read<UCHAR>(a1 + 16))
        {
            a2 = v28;
            v28 = driver.read<uintptr_t>(a1 + 24);
            a3 = 2;
            do {
                v5 = *(ULONG*)a2;
                a2 += 4LL;
                v6 = ((16 * (v5 - 1146544416)) | ((unsigned int)(v5 - 1146544416) >> 28)) ^ 0x7DF13224;
                *(ULONG*)(a2 - 4) = (v6 << 17) | (v6 >> 15);
                a3 = (unsigned int)(a3 - 1);
            } while ((ULONG)a3);
            v7 = v28;
        }
        else
        {
            v7 = 0;
        }
        v29 = v7;
        if (!v7)
            return 0;
        return Il2cppGetHandle(v7);
}

разве и должно быть 3 параметра в функции? или я чёт не так делаю
я могу же их вырезать и сделать просто локальными?

исправил, теперь вот так
sss:
Expand Collapse Copy
    uintptr_t client_entity(uintptr_t a1)
    {
        uint32_t v5 = 0, v6 = 0, a2 = 0, a3 = 0;
        uintptr_t v3 = a2, v7, v28 = 0, v29 = 0;

        if (driver.read<UCHAR>(a1 + 16))
        {
            a2 = (uintptr_t)&v28;
            v28 = driver.read<uintptr_t>(a1 + 24);
            a3 = 2;
            do {
                v5 = *(ULONG*)a2;
                a2 += 4LL;
                v6 = ((16 * (v5 - 1146544416)) | ((unsigned int)(v5 - 1146544416) >> 28)) ^ 0x7DF13224;
                *(ULONG*)(a2 - 4) = (v6 << 17) | (v6 >> 15);
                a3 = (unsigned int)(a3 - 1);
            } while ((ULONG)a3);
            v7 = v28;
        }
        else
        {
            v7 = 0;
        }
        v29 = v7;
        if (!v7)
            return 0;
        return Il2cppGetHandle(v7);
    }
 
Последнее редактирование:
Назад
Сверху Снизу