Вопрос EntityLoop

  • Автор темы Автор темы waht
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
31 Окт 2022
Сообщения
30
Реакции
0
Почему BufferList = 0?
Вроде оффсеты правильные, и декрипторы тоже

EntityLoop:
C++:
Expand Collapse Copy
 const auto base_networkable = g_driver->read_memory<uint64_t>(assembly + 0xBF9F388);
 const auto static_fields = g_driver->read_memory<uint64_t>(base_networkable + 0xB8);
 const auto ClientEntities =
     g_driver->read_memory<uint64_t>(static_fields + 0x8);
 const auto DecryptClientEntities = g_il2cpp->decrypt_wrapper(ClientEntities);
 const auto unk4 =
     g_driver->read_memory<uint64_t>(DecryptClientEntities + 0x10);
 const auto DecryptEntityList = g_il2cpp->decrypt_parent(unk4);
 auto BufferList =
     g_driver->read_memory<uint64_t>(DecryptEntityList + 0x20);
 const auto list = g_driver->read_memory<uint64_t>(BufferList + 0x10);
 const auto count = g_driver->read_memory<uint32_t>(BufferList + 0x18);
 
 std::cout << BufferList << std::endl;

BufferList всегда 0

decryptors:

Код:
Expand Collapse Copy
constexpr size_t Il2cppHandle = 0xC2BFAA0;

bool c_il2cpp::TEST_BITD(uint32_t Value, uint32_t BitPosition) {
    return (Value & (1 << BitPosition)) != 0;
}
uint64_t c_il2cpp::Il2cppGetHandle(int32_t ObjectHandleID)
{
    uint64_t rdi_1 = ((uint64_t)(ObjectHandleID >> 3));
    uint64_t rcx_1 = ((uint64_t)((ObjectHandleID & 7) - 1));
    uintptr_t ObjectArray =
        g_driver->read_memory<uintptr_t>((rcx_1 * 0x28) + (g_core->game_base + 0xC2BFAA0 + 0x8)) +
        (rdi_1 << 3);
    if (g_driver->read_memory<uint8_t>((rcx_1 * 0x28) + (g_core->game_base + 0xC2BFAA0 + 0x14)) > 1) {
        return g_driver->read_memory<uintptr_t>(ObjectArray);
    } else {
        uint32_t eax = g_driver->read_memory<uint32_t>(ObjectArray);
        eax = ~eax;
        return eax;
    }
    return 0;

}
uint64_t c_il2cpp::decrypt_wrapper(uint64_t address)  // aka decryptcliententites
{
    uint64_t InputValue = g_driver->read_memory<uint64_t>(address + 0x18);
    uint64_t* rdx = (uint64_t*)&InputValue;
    uint32_t r8d = 0x2;
    uint32_t eax, ecx, edx;

    do {
        ecx = *(uint32_t*)(rdx);
        eax = *(uint32_t*)(rdx);
        rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
        eax = eax << 0xc;
        ecx = ecx >> 0x14;
        ecx = ecx | eax;
        ecx = ecx + 0xfe328184;
        eax = ecx;
        ecx = ecx << 0x1b;
        eax = eax >> 0x5;
        eax = eax | ecx;
        eax = eax ^ 0xf713d580;
        *((uint32_t*)rdx - 1) = eax;
        --r8d;
    } while (r8d);
    return Il2cppGetHandle(InputValue);
}

uint64_t c_il2cpp::decrypt_parent(uint64_t address)
{
    uint64_t InputValue = g_driver->read_memory<uint64_t>(address + 0x18);
    uint64_t* rdx = (uint64_t*)&InputValue;
    uint32_t r8d = 0x2;
    uint32_t eax, ecx, edx;

    do {
        eax = *(uint32_t*)(rdx);
        ecx = *(uint16_t*)((uint8_t*)rdx + 2);
        rdx = (uint64_t*)((uint8_t*)rdx + 0x4);
        eax = eax << 0x10;
        ecx = ecx | eax;
        ecx = ecx + 0xa8c93d59;
        eax = ecx;
        ecx = ecx << 0x10;
        eax = eax >> 0x10;
        eax = eax | ecx;
        eax = eax ^ 0xc551eae4;
        *((uint32_t*)rdx - 1) = eax;
        --r8d;
    } while (r8d);
    return Il2cppGetHandle(InputValue);
}
 
страшно вырубай
 
(ПОФИКСИЛ) base_networkable = memory::read< uintptr_t >( game_assembly + 0xBE749E8);

printf("base_networkable: %p\n", features::visuals::base_networkable);


static_fields = memory::read< uintptr_t >( base_networkable + 0xB8);

printf("static_fields: %p\n", features::visuals::static_fields);


client_entity = memory::read< uintptr_t >( static_fields + 0x20 );

printf("client entity: %p\n", features::visuals::client_entity);


pointer = sdk::base_networkable_c::decrypt(client_entity);

printf("pointer: %p\n", features::visuals::pointer); такаяже хуета ток у меня проблемы с client entity шас идут
там просто nullptr выбивает
 
Последнее редактирование:
(ПОФИКСИЛ) base_networkable = memory::read< uintptr_t >( game_assembly + 0xBE749E8);

printf("base_networkable: %p\n", features::visuals::base_networkable);


static_fields = memory::read< uintptr_t >( base_networkable + 0xB8);

printf("static_fields: %p\n", features::visuals::static_fields);


client_entity = memory::read< uintptr_t >( static_fields + 0x20 );

printf("client entity: %p\n", features::visuals::client_entity);


pointer = sdk::base_networkable_c::decrypt(client_entity);

printf("pointer: %p\n", features::visuals::pointer); такаяже хуета ток у меня проблемы с client entity шас идут
там просто nullptr выбивает
не подскажешь как пофиксил ?
 
не подскажешь как пофиксил ?
я просто додик блять и не заходил на сервер а с кодом всё заебись было XD
ток теперь ебусь где взять бейс плеера если интересно
код:
Expand Collapse Copy
base_networkable = memory::read< uintptr_t >( game_assembly + 0xBE749E8);

printf("base_networkable: 0x%llX\n", features::visuals::base_networkable);


 static_fields = memory::read< uintptr_t >( base_networkable + 0xB8);

 printf("static_fields: 0x%llX\n", features::visuals::static_fields);


 client_entity = memory::read< uintptr_t >( static_fields + 0x20 );

 printf("client entity: 0x%llX\n", features::visuals::client_entity);


 pointer = sdk::base_networkable_c::decrypt(client_entity);

 printf("client entity encrypt: 0x%llX\n", features::visuals::pointer);


EntityList = memory::read< uint64_t >(pointer + 0x10);

printf("EntityList: 0x%llX\n", EntityList);


wrapper = sdk::base_networkable_c::decrypt_parent(EntityList);

printf("EntityList Decrypt: 0x%llX\n", wrapper);


entities = memory::read< uint64_t >( wrapper + 0x10 );

printf("entities: 0x%llX\n", entities);

auto V11 = memory::read< uint64_t >(entities + 0x10);

printf("V11: 0x%llX\n", V11);

const auto& count = memory::read< uint32_t >(entities + 0x18 );
printf("count: 0x%llX\n", count);
printf("count: %d\n", count);

auto playersclass = memory::read< uint64_t >(sdk::unity::klass({ e("BasePlayer")}));

printf("BasePlayer: 0x%llX\n", playersclass);
printf("BasePlayer: %s\n", playersclass);

for ( int i{ }; i < count; ++i ) {
    const auto& entity = memory::read< uint64_t >( V11 + 0x20 + ( i * 8 ) );
    //printf("entity: 0x%llX\n", entity);       

    uintptr_t object = memory::read<uintptr_t>(entity + 0x10);
    //printf("Object: 0x%llX\n", object);
    uintptr_t objectClass = memory::read<uintptr_t>(object + 0x30);
    //printf("objectClass: 0x%llX\n", objectClass);
    uintptr_t namePtr = memory::read<uintptr_t>(objectClass + 0x60);
    //printf("namePtr: 0x%llX\n", namePtr);



    char name[110] = {};
    memory::read_buffer(namePtr, name, sizeof(name) - 1);
    //printf("name: %s  \n", name);
    if (strstr(name, "LocalPlayer")) {
        printf("name: %s  \n", name);
        //local_player = reinterpret_cast<sdk::base_player_c*>(entity);

    }

    //if (!strstr(name, "LocalPlayer"))
    //    printf("BasePlayer: %s  \n", entity);

    if (strstr(name, "(world)")) {
        printf("Drop Item: %s  \n", name);

    }
    //if (name, reinterpret_cast<char*>(playersclass)) {
    //    printf("BasePlayer: %s  \n", name);

    //}

    //printf("Found Entity: 0x%llX | Class Entity: %s\n", entity, name);

    //printf("name: %s  \n", name);
    //if (strstr(name, "player.prefab")) {
    //    if (strstr(name, "LocalPlayer")) continue;

    //    printf("Object: 0x%llX\n", object);
    //    printf("objectClass: 0x%llX\n", objectClass);
        //printf("namePtr: 0x%llX\n", namePtr);
    //    printf("Found player: 0x%llX | Class: %s\n", entity, name);
//    }


}
то вот мой код
и да знаю что хуета
это мой первый код(до этого пастил а шас сам начал делать)
1752570506667.png
вывод в консоль
 
я просто додик блять и не заходил на сервер а с кодом всё заебись было XD
ток теперь ебусь где взять бейс плеера если интересно
код:
Expand Collapse Copy
base_networkable = memory::read< uintptr_t >( game_assembly + 0xBE749E8);

printf("base_networkable: 0x%llX\n", features::visuals::base_networkable);


 static_fields = memory::read< uintptr_t >( base_networkable + 0xB8);

 printf("static_fields: 0x%llX\n", features::visuals::static_fields);


 client_entity = memory::read< uintptr_t >( static_fields + 0x20 );

 printf("client entity: 0x%llX\n", features::visuals::client_entity);


 pointer = sdk::base_networkable_c::decrypt(client_entity);

 printf("client entity encrypt: 0x%llX\n", features::visuals::pointer);


EntityList = memory::read< uint64_t >(pointer + 0x10);

printf("EntityList: 0x%llX\n", EntityList);


wrapper = sdk::base_networkable_c::decrypt_parent(EntityList);

printf("EntityList Decrypt: 0x%llX\n", wrapper);


entities = memory::read< uint64_t >( wrapper + 0x10 );

printf("entities: 0x%llX\n", entities);

auto V11 = memory::read< uint64_t >(entities + 0x10);

printf("V11: 0x%llX\n", V11);

const auto& count = memory::read< uint32_t >(entities + 0x18 );
printf("count: 0x%llX\n", count);
printf("count: %d\n", count);

auto playersclass = memory::read< uint64_t >(sdk::unity::klass({ e("BasePlayer")}));

printf("BasePlayer: 0x%llX\n", playersclass);
printf("BasePlayer: %s\n", playersclass);

for ( int i{ }; i < count; ++i ) {
    const auto& entity = memory::read< uint64_t >( V11 + 0x20 + ( i * 8 ) );
    //printf("entity: 0x%llX\n", entity);    

    uintptr_t object = memory::read<uintptr_t>(entity + 0x10);
    //printf("Object: 0x%llX\n", object);
    uintptr_t objectClass = memory::read<uintptr_t>(object + 0x30);
    //printf("objectClass: 0x%llX\n", objectClass);
    uintptr_t namePtr = memory::read<uintptr_t>(objectClass + 0x60);
    //printf("namePtr: 0x%llX\n", namePtr);



    char name[110] = {};
    memory::read_buffer(namePtr, name, sizeof(name) - 1);
    //printf("name: %s  \n", name);
    if (strstr(name, "LocalPlayer")) {
        printf("name: %s  \n", name);
        //local_player = reinterpret_cast<sdk::base_player_c*>(entity);

    }

    //if (!strstr(name, "LocalPlayer"))
    //    printf("BasePlayer: %s  \n", entity);

    if (strstr(name, "(world)")) {
        printf("Drop Item: %s  \n", name);

    }
    //if (name, reinterpret_cast<char*>(playersclass)) {
    //    printf("BasePlayer: %s  \n", name);

    //}

    //printf("Found Entity: 0x%llX | Class Entity: %s\n", entity, name);

    //printf("name: %s  \n", name);
    //if (strstr(name, "player.prefab")) {
    //    if (strstr(name, "LocalPlayer")) continue;

    //    printf("Object: 0x%llX\n", object);
    //    printf("objectClass: 0x%llX\n", objectClass);
        //printf("namePtr: 0x%llX\n", namePtr);
    //    printf("Found player: 0x%llX | Class: %s\n", entity, name);
//    }


}
то вот мой код
и да знаю что хуета
это мой первый код(до этого пастил а шас сам начал делать)
Посмотреть вложение 311052 вывод в консоль


V11 + 0x20 - BasePlayer ( вроде как, не проверял)
 
у меня получилось что у меня первый локал плеер а потом хуярят прифабы и предметы на земле
Всё верно , у всех всегда первый local player, потом идут все entity которые у тебя в зоне погрузки. И зачем вы все читаете названия классов если можно все сделать по prefab id?
 
Всё верно , у всех всегда первый local player, потом идут все entity которые у тебя в зоне погрузки. И зачем вы все читаете названия классов если можно все сделать по prefab id?
а как мне получить префаб id?
 
Назад
Сверху Снизу