Неактуально Заказ [Namalsk] Обход клиентского античита

вайега52

Налуашил состояние
Автор темы
Модератор
2,897
2,902
Нужен человек, который сможет обойти античит для сервера в CR:MP - Namalsk RP.
Обход должен позволять отправлять фейковую синхру (PLAYER, VEHICLE, UNOCCUPIED, BULLET и т.д.) через плагины и скрипты (MoonLoader, SampFuncs) без кика.
На данный момент лаунчер кикает при перехвате/отправке многих пакетов, даже если они в теории ничем не отличаются от тех, которые отправляет сам SA:MP.​


VK/TG: @egaaaaaaaaaaaaaaaaa.
Оплату обсудим.
 
  • Нравится
Реакции: nbljlb_bbljloro

waparabka

Известный
118
185
скорее всего, при обнаружении античита сервером (при обмене первыми пакетами), он обрабатывает синхру дописывая в неё ключи.
Эти ключи могут меняться каждое обновление, или в целом зависить от чего либо.

по типу такого
C++:
aim_sync_crypted(RakNet::BitStream& bs) // client
{
    // read & write aim sync

    bs.SetReadOffset(8);

    stAimData data {  };

    bs.Read(data);
    bs.ResetWritePointer();

    bs.Write<uint8_t>(ID_AIM_SYNC);
    bs.Write(data);
 
    // write aim sync key

    bs.Write(get_aim_sync_key(), KEY_LENGTH);
}

хукаешь функции античита, пишешь синхру через них, тести
 

вайега52

Налуашил состояние
Автор темы
Модератор
2,897
2,902
скорее всего, при обнаружении античита сервером (при обмене первыми пакетами), он обрабатывает синхру дописывая в неё ключи.
Эти ключи могут меняться каждое обновление, или в целом зависить от чего либо.

по типу такого
C++:
aim_sync_crypted(RakNet::BitStream& bs) // client
{
    // read & write aim sync

    bs.SetReadOffset(8);

    stAimData data {  };

    bs.Read(data);
    bs.ResetWritePointer();

    bs.Write<uint8_t>(ID_AIM_SYNC);
    bs.Write(data);
 
    // write aim sync key

    bs.Write(get_aim_sync_key(), KEY_LENGTH);
}

хукаешь функции античита, пишешь синхру через них, тести
Сейчас попробовал прочитать 207 пакет, и вправду, там дописывается какой-то еще один байт, но не совсем понимаю, почему кикает, когда я хукаю уже готовые данные (хукал ракпир)
Lua:
function CRakPeer__Send(this, bs, priority, reliability, orderingChannel, binaryAddress, port, broadcast)
    local packetId = raknetBitStreamReadInt8(bs)   
    if (packetId == 207) then
        print("lrk", raknetBitStreamReadInt16(bs))
        print("uwk", raknetBitStreamReadInt16(bs))
        print("keys", raknetBitStreamReadInt16(bs))
        print("px", raknetBitStreamReadFloat(bs))
        print("py", raknetBitStreamReadFloat(bs))
        print("pz", raknetBitStreamReadFloat(bs))
        print("qw", raknetBitStreamReadFloat(bs))
        print("qx", raknetBitStreamReadFloat(bs))
        print("qy", raknetBitStreamReadFloat(bs))
        print("qz", raknetBitStreamReadFloat(bs))
        print("hp", raknetBitStreamReadInt8(bs))
        print("arm", raknetBitStreamReadInt8(bs))
        print("weap", raknetBitStreamReadInt8(bs))
        print("speca", raknetBitStreamReadInt8(bs))
        print("mx", raknetBitStreamReadFloat(bs))
        print("my", raknetBitStreamReadFloat(bs))
        print("mz", raknetBitStreamReadFloat(bs))
        print("sx", raknetBitStreamReadFloat(bs))
        print("sy", raknetBitStreamReadFloat(bs))
        print("sz", raknetBitStreamReadFloat(bs))
        print("sveh", raknetBitStreamReadInt16(bs))
        print("anim", raknetBitStreamReadInt16(bs))
        print("aFlag", raknetBitStreamReadInt16(bs))
        print("hz", raknetBitStreamReadInt8(bs))

        raknetBitStreamResetWritePointer(bs)
        raknetBitStreamSetWriteOffset(bs, 48)
        raknetBitStreamWriteFloat(bs, 0) -- posX
    end
    return originalCRakPeer__Send(this, bs, priority, reliability, orderingChannel, binaryAddress, port, broadcast)
end
 

F0RQU1N and

Известный
1,301
499
Сейчас попробовал прочитать 207 пакет, и вправду, там дописывается какой-то еще один байт, но не совсем понимаю, почему кикает, когда я хукаю уже готовые данные (хукал ракпир)
Lua:
function CRakPeer__Send(this, bs, priority, reliability, orderingChannel, binaryAddress, port, broadcast)
    local packetId = raknetBitStreamReadInt8(bs)  
    if (packetId == 207) then
        print("lrk", raknetBitStreamReadInt16(bs))
        print("uwk", raknetBitStreamReadInt16(bs))
        print("keys", raknetBitStreamReadInt16(bs))
        print("px", raknetBitStreamReadFloat(bs))
        print("py", raknetBitStreamReadFloat(bs))
        print("pz", raknetBitStreamReadFloat(bs))
        print("qw", raknetBitStreamReadFloat(bs))
        print("qx", raknetBitStreamReadFloat(bs))
        print("qy", raknetBitStreamReadFloat(bs))
        print("qz", raknetBitStreamReadFloat(bs))
        print("hp", raknetBitStreamReadInt8(bs))
        print("arm", raknetBitStreamReadInt8(bs))
        print("weap", raknetBitStreamReadInt8(bs))
        print("speca", raknetBitStreamReadInt8(bs))
        print("mx", raknetBitStreamReadFloat(bs))
        print("my", raknetBitStreamReadFloat(bs))
        print("mz", raknetBitStreamReadFloat(bs))
        print("sx", raknetBitStreamReadFloat(bs))
        print("sy", raknetBitStreamReadFloat(bs))
        print("sz", raknetBitStreamReadFloat(bs))
        print("sveh", raknetBitStreamReadInt16(bs))
        print("anim", raknetBitStreamReadInt16(bs))
        print("aFlag", raknetBitStreamReadInt16(bs))
        print("hz", raknetBitStreamReadInt8(bs))

        raknetBitStreamResetWritePointer(bs)
        raknetBitStreamSetWriteOffset(bs, 48)
        raknetBitStreamWriteFloat(bs, 0) -- posX
    end
    return originalCRakPeer__Send(this, bs, priority, reliability, orderingChannel, binaryAddress, port, broadcast)
end
мб оно твой джамп детектит?
 

Fix_Name_Fix

Потрачен
468
150
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если не ошибаюсь на намальске не стандартные айди пакетов синхры, то есть если стандарат онфут синхры это пакет 207, то на намальске это другой пакет. А структура заполняется так-же по стандарту.
 
Последнее редактирование:

вайега52

Налуашил состояние
Автор темы
Модератор
2,897
2,902
Если не ошибаюсь на намальске не стандартные айди пакетов синхры, то есть если стандарат онфут синхры это пакет 207, то на намальске это другой пакет. А структура заполняется так-же по стандарту.
Не, онфут синхра всё также 207, там в другом дело
 

Fix_Name_Fix

Потрачен
468
150
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не, онфут синхра всё также 207, там в другом дело
Ну как щас хз, но раньше было так
.:
new ID_PLAYER_SYNC = 116;
new ID_TRAILER_SYNC = 114;
public OnPlayerReceivedPacket(player_id, packet_id, BitStream:bs)
{
    if(packet_id == ID_TRAILER_SYNC)
    {
        new trailerid;
        BS_IgnoreBits(bs, 8); // packet id
        BS_ReadValue(bs, RNM_UINT16, trailerid);
        if(GetPlayerState(player_id) != PLAYER_STATE_DRIVER) return 0;
        if(!OnPlayerUpdateTrailer(player_id, trailerid)) return 0; // отменяем по желанию в функции выше
        return 1;
    }

    if(packet_id == ID_PLAYER_SYNC)
    {
        new lrkeys, udkeys, sampkeys,
        Float:pos[3], Float:quaternion[4],
        health, armor, weaponid, specialaction,
        Float:speed[3], Float:surfingoffsets[3],
        surfingvehid, animationid, animflags;
        
        BS_IgnoreBits(bs, 8); // packet id
        BS_ReadValue(bs, RNM_UINT16, lrkeys,
        RNM_UINT16, udkeys,
        RNM_UINT16, sampkeys,
        RNM_FLOAT, pos[0],
        RNM_FLOAT, pos[1],
        RNM_FLOAT, pos[2],
        RNM_FLOAT, quaternion[0],
        RNM_FLOAT, quaternion[1],
        RNM_FLOAT, quaternion[2],
        RNM_FLOAT, quaternion[3],
        RNM_UINT8, health,
        RNM_UINT8, armor,
        RNM_UINT8, weaponid,
        RNM_UINT8, specialaction,
        RNM_FLOAT, speed[0],
        RNM_FLOAT, speed[1],
        RNM_FLOAT, speed[2],
        RNM_FLOAT, surfingoffsets[0],
        RNM_FLOAT, surfingoffsets[1],
        RNM_FLOAT, surfingoffsets[2],
        RNM_UINT16, surfingvehid,
        RNM_INT16, animationid,
        RNM_INT16, animflags);

        if (weaponid == 38) weaponid = 0;



        BS_Reset(bs);
        BS_WriteValue(bs, RNM_UINT8, packet_id,
        RNM_UINT16, lrkeys,
        RNM_UINT16, udkeys,
        RNM_UINT16, sampkeys,
        RNM_FLOAT, pos[0],
        RNM_FLOAT, pos[1],
        RNM_FLOAT, pos[2],
        RNM_FLOAT, quaternion[0],
        RNM_FLOAT, quaternion[1],
        RNM_FLOAT, quaternion[2],
        RNM_FLOAT, quaternion[3],
        RNM_UINT8, health,
        RNM_UINT8, armor,
        RNM_UINT8, weaponid,
        RNM_UINT8, specialaction,
        RNM_FLOAT, speed[0],
        RNM_FLOAT, speed[1],
        RNM_FLOAT, speed[2],
        RNM_FLOAT, surfingoffsets[0],
        RNM_FLOAT, surfingoffsets[1],
        RNM_FLOAT, surfingoffsets[2],
        RNM_UINT16, surfingvehid,
        RNM_INT16, animationid,
        RNM_INT16, animflags);
    }
    return 1;
}
 
  • Вау
Реакции: вайега52

вайега52

Налуашил состояние
Автор темы
Модератор
2,897
2,902
Ну как щас хз, но раньше было так
.:
new ID_PLAYER_SYNC = 116;
new ID_TRAILER_SYNC = 114;
public OnPlayerReceivedPacket(player_id, packet_id, BitStream:bs)
{
    if(packet_id == ID_TRAILER_SYNC)
    {
        new trailerid;
        BS_IgnoreBits(bs, 8); // packet id
        BS_ReadValue(bs, RNM_UINT16, trailerid);
        if(GetPlayerState(player_id) != PLAYER_STATE_DRIVER) return 0;
        if(!OnPlayerUpdateTrailer(player_id, trailerid)) return 0; // отменяем по желанию в функции выше
        return 1;
    }

    if(packet_id == ID_PLAYER_SYNC)
    {
        new lrkeys, udkeys, sampkeys,
        Float:pos[3], Float:quaternion[4],
        health, armor, weaponid, specialaction,
        Float:speed[3], Float:surfingoffsets[3],
        surfingvehid, animationid, animflags;
      
        BS_IgnoreBits(bs, 8); // packet id
        BS_ReadValue(bs, RNM_UINT16, lrkeys,
        RNM_UINT16, udkeys,
        RNM_UINT16, sampkeys,
        RNM_FLOAT, pos[0],
        RNM_FLOAT, pos[1],
        RNM_FLOAT, pos[2],
        RNM_FLOAT, quaternion[0],
        RNM_FLOAT, quaternion[1],
        RNM_FLOAT, quaternion[2],
        RNM_FLOAT, quaternion[3],
        RNM_UINT8, health,
        RNM_UINT8, armor,
        RNM_UINT8, weaponid,
        RNM_UINT8, specialaction,
        RNM_FLOAT, speed[0],
        RNM_FLOAT, speed[1],
        RNM_FLOAT, speed[2],
        RNM_FLOAT, surfingoffsets[0],
        RNM_FLOAT, surfingoffsets[1],
        RNM_FLOAT, surfingoffsets[2],
        RNM_UINT16, surfingvehid,
        RNM_INT16, animationid,
        RNM_INT16, animflags);

        if (weaponid == 38) weaponid = 0;



        BS_Reset(bs);
        BS_WriteValue(bs, RNM_UINT8, packet_id,
        RNM_UINT16, lrkeys,
        RNM_UINT16, udkeys,
        RNM_UINT16, sampkeys,
        RNM_FLOAT, pos[0],
        RNM_FLOAT, pos[1],
        RNM_FLOAT, pos[2],
        RNM_FLOAT, quaternion[0],
        RNM_FLOAT, quaternion[1],
        RNM_FLOAT, quaternion[2],
        RNM_FLOAT, quaternion[3],
        RNM_UINT8, health,
        RNM_UINT8, armor,
        RNM_UINT8, weaponid,
        RNM_UINT8, specialaction,
        RNM_FLOAT, speed[0],
        RNM_FLOAT, speed[1],
        RNM_FLOAT, speed[2],
        RNM_FLOAT, surfingoffsets[0],
        RNM_FLOAT, surfingoffsets[1],
        RNM_FLOAT, surfingoffsets[2],
        RNM_UINT16, surfingvehid,
        RNM_INT16, animationid,
        RNM_INT16, animflags);
    }
    return 1;
}
Если правильно помню, то такого айди пакета не отправлялось (хукал ракпир). Хотя возможно что-то упустил