Исходник How to get cmds in 2024

Начинающий
Статус
Онлайн
Регистрация
18 Сен 2023
Сообщения
12
Реакции[?]
18
Поинты[?]
17K
В общем решил я тут под пиво сделать приколы
Но как выяснилось кс2 перелопатили на 180 градусов
Если зайти в CCSGOInput::CreateMove по 5 индексу, вместо хранения цмд в инпуте можно увидеть вот это чудище:
1735322066385.png
Вальве решили хранить их отдельно и если при получении их нет, создавать через memalloc

Так вот, первым делом фиксим класс инпута, раз все по другому:
Код:
class c_csgo_input
{
public:
    char pad_0000[592]; //0x0000
    bool N0000013B; //0x0250
    bool in_third_person; //0x0251
    char pad_0252[6]; //0x0252
    vector3d thirdperson_angles;
};
После чего уже можно делать магию в креатмуве
Для этого нужно получить массив команд и просто обратиться к ним через магический оффсет (я хз что это за рофлы но ВАЛВ)
Код:
        auto local_player_controller = sdk::entity_system->get_local_player_controller();
        if (local_player_controller.raw() != 0) {

            int index{};
            sdk::entity_system->get_entity_index(local_player_controller.as<void*>(), &index);

            if (index != -1)
                index -= 1;

            const auto user_commands = **patterns::get_commands.as<c_user_cmd***>();
            const auto sequence_number = *(int*)((uintptr_t)user_commands + 0x5C00);

            c_user_cmd* current_cmd = &user_commands[sequence_number % 150];

            if (current_cmd)
            {
                // magic
            }
        }
И у вас готовы кмдшки
Все паттерны можно найти самому за 3 клика, это все в одной функции лежит....
 
Начинающий
Статус
Оффлайн
Регистрация
30 Апр 2024
Сообщения
3
Реакции[?]
2
Поинты[?]
2K
А можно хукнуть Create Move с помощью этой сигнатурки - "48 8B C4 4C 89 40 18 48 89 48 08 55 53 56 57 48 8D A8 E8 FE FF FF"
и получить кмдшки 3-им параметром
 
Пользователь
Статус
Оффлайн
Регистрация
3 Янв 2020
Сообщения
107
Реакции[?]
118
Поинты[?]
22K
Начинающий
Статус
Оффлайн
Регистрация
1 Ноя 2024
Сообщения
37
Реакции[?]
30
Поинты[?]
25K
В общем решил я тут под пиво сделать приколы
Но как выяснилось кс2 перелопатили на 180 градусов
Если зайти в CCSGOInput::CreateMove по 5 индексу, вместо хранения цмд в инпуте можно увидеть вот это чудище:
Посмотреть вложение 294008
Вальве решили хранить их отдельно и если при получении их нет, создавать через memalloc

Так вот, первым делом фиксим класс инпута, раз все по другому:
Код:
class c_csgo_input
{
public:
    char pad_0000[592]; //0x0000
    bool N0000013B; //0x0250
    bool in_third_person; //0x0251
    char pad_0252[6]; //0x0252
    vector3d thirdperson_angles;
};
После чего уже можно делать магию в креатмуве
Для этого нужно получить массив команд и просто обратиться к ним через магический оффсет (я хз что это за рофлы но ВАЛВ)
Код:
        auto local_player_controller = sdk::entity_system->get_local_player_controller();
        if (local_player_controller.raw() != 0) {

            int index{};
            sdk::entity_system->get_entity_index(local_player_controller.as<void*>(), &index);

            if (index != -1)
                index -= 1;

            const auto user_commands = **patterns::get_commands.as<c_user_cmd***>();
            const auto sequence_number = *(int*)((uintptr_t)user_commands + 0x5C00);

            c_user_cmd* current_cmd = &user_commands[sequence_number % 150];

            if (current_cmd)
            {
                // magic
            }
        }
И у вас готовы кмдшки
Все паттерны можно найти самому за 3 клика, это все в одной функции лежит....
круто, все это лежит в паблике ты ничего нового не открыл и не сделал
опай ты бы хотя бы саморазвитием для начала занялся елки палки
 
Начинающий
Статус
Онлайн
Регистрация
18 Сен 2023
Сообщения
12
Реакции[?]
18
Поинты[?]
17K
круто, все это лежит в паблике ты ничего нового не открыл и не сделал
опай ты бы хотя бы саморазвитием для начала занялся елки палки
мне че теперь реально доказывать что я умный? нахуй шел
 
Участник
Статус
Оффлайн
Регистрация
21 Сен 2019
Сообщения
1,018
Реакции[?]
183
Поинты[?]
9K
круто, все это лежит в паблике ты ничего нового не открыл и не сделал
опай ты бы хотя бы саморазвитием для начала занялся елки палки
Та ты то откуда понял что это опай
 
Начинающий
Статус
Оффлайн
Регистрация
1 Ноя 2024
Сообщения
37
Реакции[?]
30
Поинты[?]
25K
мне че теперь реально доказывать что я умный? нахуй шел
кому ты там что докажешь
думаю не стоит что ты продавал пасту легендвара в4 только на собственном сдк и с какими то шизоидным кодом
да и кс2 ты осилить нормально не смог и вернулся снова в ксго :LUL:
 
Новичок
Статус
Оффлайн
Регистрация
8 Июл 2024
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Код:
CUserCmd* GetUserCmd(CCSPlayerController* local_controller)
    {
        static auto get_command_index = reinterpret_cast<void*(__fastcall*)(void*, int*)>(MEM::GetAbsoluteAddress(MEM::FindPattern(CLIENT_DLL, "E8 ? ? ? ? 8B 8D ? ? ? ? 8D 51"), 1, 0));
        if (!get_command_index)
            return nullptr;

        int index = 0;
        get_command_index(local_controller, &index);
        int command_index = index - 1;

        if (command_index == -1)
            command_index = 0xFFFFFFFFLL;

        static auto get_user_cmd_base = reinterpret_cast<void*(__fastcall*)(void*, int)>(MEM::GetAbsoluteAddress(MEM::FindPattern(CLIENT_DLL, "E8 ? ? ? ? 48 8B CF 4C 8B E8 44 8B B8"), 1, 0));
        if (!get_user_cmd_base)
            return nullptr;

        static void* cmd_base_address = *reinterpret_cast<void**>(MEM::ResolveRelativeAddress(MEM::FindPattern(CLIENT_DLL, "48 8B 0D ? ? ? ? E8 ? ? ? ? 48 8B CF 4C 8B E8"), 0x3, 0x7));
        if (!cmd_base_address)
            return nullptr;

        auto user_cmd_base = get_user_cmd_base(cmd_base_address, command_index);
        if (!user_cmd_base)
            return nullptr;

        DWORD sequence_number = *reinterpret_cast<DWORD*>((uintptr_t)user_cmd_base + 0x5C00);

        static auto get_user_cmd = reinterpret_cast<CUserCmd*(__fastcall*)(void*, DWORD)>(MEM::GetAbsoluteAddress(MEM::FindPattern(CLIENT_DLL, "E8 ? ? ? ? 48 8B 0D ? ? ? ? 45 33 E4 48 89 44 24"), 1, 0));
        if (!get_user_cmd)
            return nullptr;

        auto user_cmd = get_user_cmd(local_controller, sequence_number);
        return user_cmd;
    }
 
Сверху Снизу