FNamePool Enumeration

bu ne sadece .. ler mi görür anlamadım bende hocam
 
kimlik kullanmadan ajan ve silah adlarını almak için basit bir yazı.
ön uyarı: bu, kopyala ve yapıştır yoluyla çalışmaz. ayrıca, temizlemeye başlamadığım için kod korkunç görünüyor.

Daha önce yayınladığım şifre çözme rutini:
Kod:
__forceinline __int64
game::decrypt_xor_keys(const uint32_t key, const uintptr_t* state)
{  
    __int64 v2;
    unsigned __int64 v3;
    unsigned __int64 v4;
    unsigned __int64 v5;
    unsigned int v6;
    __int64 v7;
    unsigned int v8;
    int v9;
    unsigned int v10;
    unsigned __int64 v11;
 
    v2 = (unsigned int)(key << 25);
    v3 = 2685821657736338717i64 * ((unsigned int)key ^ v2 ^ (((unsigned int)key ^ ((unsigned __int64)(unsigned int)key >> 15)) >> 12)) % 7;
    v4 = state[v3];
    v5 = (2685821657736338717i64 * ((unsigned int)key ^ v2 ^ (((unsigned int)key ^ ((unsigned __int64)(unsigned int)key >> 15)) >> 12))) >> 32;
    v6 = (unsigned int)v3 % 7;
    if (!((unsigned int)v3 % 7))
    {
        v7 = 2 * ((2 * v4) ^ ((2 * v4) ^ (v4 >> 1)) & 0x5555555555555555i64);
        v4 = v7 ^ (v7 ^ (((2 * v4) ^ ((2 * v4) ^ (v4 >> 1)) & 0x5555555555555555i64) >> 1)) & 0x5555555555555555i64;
        goto LABEL_5;
    }
    if (v6 == 1)
    {
        v9 = 2 * v3;
        v8 = v5 + v3;
        v4 = ~(unsigned __int64)(unsigned int)(v5 + v3) ^ (v4 - (unsigned int)(v5 + 2 * v3));
    }
    else
    {
    LABEL_5:
        v8 = v5 + v3;
        v9 = 2 * v3;
    }
    if (v6 == 2)
    {
        v4 = __ROL8__((2 * v4) ^ ((2 * v4) ^ (v4 >> 1)) & 0x5555555555555555i64, (unsigned __int8)(v8 % 0x3F) + 1);
        goto LABEL_8;
    }
    if (v6 == 3)
    {
        v10 = v5 + v9;
        v4 = __ROL8__((unsigned int)(v5 + v9) + v4, (unsigned __int8)(v8 % 0x3F) + 1);
    }
    else
    {
    LABEL_8:
        v10 = v9 + v5;
    }
    if (v6 == 4)
    {
        v4 ^= v8;
    LABEL_11:
        if (v6 == 6)
        {
            v11 = __ROL8__(v4, (unsigned __int8)(v10 % 0x3F) + 1);
            v4 = (2 * v11) ^ ((2 * v11) ^ (v11 >> 1)) & 0x5555555555555555i64;
        }
 
    }
    else
    {
        if (v6 != 5)
            goto LABEL_11;
        v4 += v8 - (unsigned __int64)v10;
 
    }
    this->xor_key = v4 ^ key;
    return (v4 ^ key);
 
}

az önce yayınladığım şifre çözme rutinini kullanarak xor_key elde etme işlevi - neredeyse uworld ile aynı:


Kod:
bool
game::decrypt_name_key(uintptr_t valorant_base, uintptr_t* returned_xor)
{
    uintptr_t namepoolkey;
    engine->rvpm(engine->val_base + names_key, sizeof(uintptr_t), (unsigned char*)&namepoolkey);
    if (!namepoolkey)
    {
        printf("[-] offset name_pool_key invalid!\n");
        return false;
 
    }
 
    #pragma pack(push, 1)
        struct state
        {
            uintptr_t keys[7];
 
        };
    #pragma pack(pop)
 
    state xor_state;
    engine->rvpm(engine->val_base + names_state, sizeof(state), (unsigned char*)&xor_state);
 
    const auto address = decrypt_xor_keys(namepoolkey, (uintptr_t*)&xor_state);
 
    uintptr_t xors;
    engine->rvpm(address, sizeof(uintptr_t), (unsigned char*)&xors);
 
    if (xors)
    {
        printf("[+] returned xor_address!\n");
        *returned_xor = xors;
        return true;
 
    }
    else
    {
        printf("[-] failed to return xor_address!\n");
        return false;
 
    }
 
}

read chain for entry (for weapon(s):


Kod:
uintptr_t inv;
engine->rvpm(entities[i].entity + inventory, sizeof(uintptr_t), (unsigned char*)&inv);
 
uintptr_t eq;
engine->rvpm(inv + equippable, sizeof(uintptr_t), (unsigned char*)&eq);
 
int gun_id;
engine->rvpm(eq + objectid, sizeof(int), (unsigned char*)&gun_id);

-


Kod:
const uintptr_t names_state = 0x8CDEF40;
const uintptr_t names_key = names_state + 0x38;
const uintptr_t fnameentry = 0x8CABF80;

The subject is entirely mine. I don't want it to be shared on any forum. I just wrote (!)
is this translated from other language of code?
 

  Şuanda konuyu görüntüleyen kullanıcılar


Üst Alt