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

why ega

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


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

waparabka

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

по типу такого
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);
}

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

why ega

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

по типу такого
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,310
494
Сейчас попробовал прочитать 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

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

why ega

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

Fix_Name_Fix

Потрачен
470
147
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не, онфут синхра всё также 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;
}
 
  • Вау
Реакции: why ega

why ega

РП игрок
Автор темы
Модератор
2,541
2,233
Ну как щас хз, но раньше было так
.:
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;
}
Если правильно помню, то такого айди пакета не отправлялось (хукал ракпир). Хотя возможно что-то упустил