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

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

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

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


C++:
Expand Collapse Copy
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;
    }


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

Спасибо заранее!
 
А на какой версии CryEngine сейчас WF? Просто можно поискать людей кто недавно форкнул репозиторий. Например вот:
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Правда 2 года назад(
 
А на какой версии CryEngine сейчас WF? Просто можно поискать людей кто недавно форкнул репозиторий. Например вот:
Пожалуйста, авторизуйтесь для просмотра ссылки.
. Правда 2 года назад(
На третьей, да и это форк другого репозитория, не официального
 
Назад
Сверху Снизу