Как обновить экстернал функции?

Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
Привет всем, нашёл данный исходник экстернал чита (который использует драйвер) на всем знакомом форуме
Пожалуйста, авторизуйтесь для просмотра ссылки.
(не реклама).

Практически всё нужное обновил, кроме данных функций ( Getcliente, getcliententitybyid , creatactor ). Ранее с экстерналом не работал (ну попытки были, но чисто изучение драйвера, не по функционалу). Таких реализаций данных функций не видел (т.к. в интернале всё работает через игровые классы).

Вот собственно функции, чтобы не смотреть отдельно исходник.


C++:
IActor* __fastcall Getcliente(int id)
    {
        int64 v2; // rax
        __int16 _Id; // si
        int64 v4; // rdi
        int64 j; // rbx
        IActor* iActor; // rcx
        int64 v7; // rax
        __int64 i; // rax
        int64 v9; // rcx

        v2 = Read<int64>((DWORD64)this + 0x30);
        v4 = (int64)this;
        j = Read<int64>((DWORD64)v2);
        if (j == v2)
            return 0;
        int oooo = 0;
        while (1)
        {
            iActor = Read<IActor*>((DWORD64)j + 0x28);
            if (iActor)
            {
                if (Read<DWORD>((DWORD64)iActor + 0x20) == id)
                {
                    return iActor;
                }
            }

            v7 = Read<int64>((DWORD64)j + 0x10);

            if (Read<BYTE>((DWORD64)v7 + 0x19))
            {
                for (i = Read<int64>((DWORD64)j + 0x8); !Read<BYTE>((DWORD64)i + 0x19); i = Read<int64>((DWORD64)i + 0x8))
                {
                    if (j != Read<int64>((DWORD64)i + 0x10))
                        break;
                    j = i;
                }
                j = i;
            }
            else
            {
                v9 = Read<int64>((DWORD64)v7);
                for (j = Read<int64>((DWORD64)j + 0x10); !Read<BYTE>((DWORD64)v9 + 0x19); v9 = Read<int64>((DWORD64)v9))
                    j = v9;
            }

            if (j == Read<int64>((DWORD64)v4 + 0x30))
                return 0i64;
        }
        return 0;
    }

int32 GetclientEntityId()
    {
        int64 v1 = Read<int64>((DWORD64)this + 0x50);

        int64 v2 = Read<int64>((DWORD64)v1 + 0x48);
        if (v2)
            v2 = Read<int64>((DWORD64)v2 + 0x10);
        if (!v2)
            return 0;
        int32 v4 = Read<int32>((DWORD64)v2 + 0x20);
        if (!v4)
            return 0;
        return v4;

    }

__int64 __fastcall CreatActor(ActorStruct* ActorStruct)
    {
        int64 v2; // rax
        __int16 _Id; // si
        int64 v4; // rdi
        int64 j; // rbx
        IActor* iActor; // rcx
        int64 v7; // rax
        __int64 i; // rax
        int64 v9; // rcx

        v2 = Read<int64>((DWORD64)this + 0x30);
        v4 = (int64)this;
        j = Read<int64>((DWORD64)v2);
        if (j == v2)
            return 0;
        ActorStruct->size = Getactorsize();
        int oooo = 0;
        while (1)
        {
            iActor = Read<IActor*>((DWORD64)j + 0x28);
            if (iActor)
            {
                ActorStruct->Actor[oooo] = iActor;
                oooo++;
                if (oooo >= ActorStruct->size)
                    break;
            }

            v7 = Read<int64>((DWORD64)j + 0x10);

            if (Read<BYTE>((DWORD64)v7 + 0x19))
            {
                for (i = Read<int64>((DWORD64)j + 0x8); !Read<BYTE>((DWORD64)i + 0x19); i = Read<int64>((DWORD64)i + 0x8))
                {
                    if (j != Read<int64>((DWORD64)i + 0x10))
                        break;
                    j = i;
                }
                j = i;
            }
            else
            {
                v9 = Read<int64>((DWORD64)v7);
                for (j = Read<int64>((DWORD64)j + 0x10); !Read<BYTE>((DWORD64)v9 + 0x19); v9 = Read<int64>((DWORD64)v9))
                    j = v9;
            }

            if (j == Read<int64>((DWORD64)v4 + 0x30))
                return 0i64;
        }
        return 0;
    }

Можете пожалуйста объяснить как это обновить можно? Я пытался и по названиям ( и по похожим ) искать в дампе игры через иду, в псевдокоде совсем другой код. Хочется понять как вообще такую реализацию находят (если что, под рукой исходника движка нету, т.к. не сохранял, а с гитхаба его удалили недавно).

Спасибо заранее!
 
Пользователь
Статус
Оффлайн
Регистрация
21 Окт 2019
Сообщения
346
Реакции[?]
48
Поинты[?]
15K
А на какой версии CryEngine сейчас WF? Просто можно поискать людей кто недавно форкнул репозиторий. Например вот:
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Правда 2 года назад(
 
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
А на какой версии CryEngine сейчас WF? Просто можно поискать людей кто недавно форкнул репозиторий. Например вот:
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Правда 2 года назад(
На третьей, да и это форк другого репозитория, не официального
 
Сверху Снизу