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

whyega52

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


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

whyega52

Гений, миллионер, плейбой, долбаеб
Автор темы
Модератор
2,791
2,617
Ап
 
  • Вау
Реакции: cort

waparabka

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

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

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

whyega52

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

по типу такого
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,307
498
Сейчас попробовал прочитать 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
149
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если не ошибаюсь на намальске не стандартные айди пакетов синхры, то есть если стандарат онфут синхры это пакет 207, то на намальске это другой пакет. А структура заполняется так-же по стандарту.
 
Последнее редактирование:

whyega52

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

Fix_Name_Fix

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

whyega52

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