GrimAnticheat / Grim

Fully async, multithreaded, predictive, open source, 3.01 reach, 1.005 timer, 0.01% speed, 99.99% antikb, "bypassable" 1.8-1.20 anticheat.
GNU General Public License v3.0
1k stars 285 forks source link

Blink Bypass #1411

Open MysteryMan233 opened 3 months ago

MysteryMan233 commented 3 months ago

Describe the bypass and how to replicate it

/*

import net.ccbluex.liquidbounce.LiquidBounce import net.ccbluex.liquidbounce.api.minecraft.client.entity.player.IEntityOtherPlayerMP import net.ccbluex.liquidbounce.api.minecraft.network.IPacket import net.ccbluex.liquidbounce.event.EventTarget import net.ccbluex.liquidbounce.event.PacketEvent import net.ccbluex.liquidbounce.event.Render3DEvent import net.ccbluex.liquidbounce.event.UpdateEvent import net.ccbluex.liquidbounce.features.module.Module import net.ccbluex.liquidbounce.features.module.ModuleCategory import net.ccbluex.liquidbounce.features.module.ModuleInfo import net.ccbluex.liquidbounce.features.module.modules.render.Breadcrumbs import net.ccbluex.liquidbounce.injection.backend.unwrap import net.ccbluex.liquidbounce.utils.render.ColorUtils.rainbow import net.ccbluex.liquidbounce.utils.render.RenderUtils import net.ccbluex.liquidbounce.utils.timer.MSTimer import net.ccbluex.liquidbounce.value.BoolValue import net.ccbluex.liquidbounce.value.IntegerValue import net.minecraft.network.play.client.CPacketConfirmTransaction import org.lwjgl.opengl.GL11 import java.awt.Color import java.util.* import java.util.concurrent.LinkedBlockingQueue

@ModuleInfo(name = "Blink", description = "Suspends all movement packets.", category = ModuleCategory.PLAYER) class Blink : Module() { private val packets = LinkedBlockingQueue() private var fakePlayer: IEntityOtherPlayerMP? = null private var disableLogger = false private val positions = LinkedList() private val pulseValue = BoolValue("Pulse", false) private val cancelC0F = BoolValue("CanCelC0F",false) private val sendInValidC0F = BoolValue("SendInValidC0F",false) private val pulseDelayValue = IntegerValue("PulseDelay", 1000, 500, 5000) private val pulseTimer = MSTimer()

override fun onEnable() {
    val thePlayer = mc.thePlayer ?: return

    if (!pulseValue.get()) {
        val faker: IEntityOtherPlayerMP = classProvider.createEntityOtherPlayerMP(mc.theWorld!!, thePlayer.gameProfile)

        faker.rotationYawHead = thePlayer.rotationYawHead;
        faker.renderYawOffset = thePlayer.renderYawOffset;
        faker.copyLocationAndAnglesFrom(thePlayer)
        faker.rotationYawHead = thePlayer.rotationYawHead
        mc.theWorld!!.addEntityToWorld(-1337, faker)

        fakePlayer = faker
    }
    synchronized(positions) {
        positions.add(doubleArrayOf(thePlayer.posX, thePlayer.entityBoundingBox.minY + thePlayer.eyeHeight / 2, thePlayer.posZ))
        positions.add(doubleArrayOf(thePlayer.posX, thePlayer.entityBoundingBox.minY, thePlayer.posZ))
    }
    pulseTimer.reset()
}

override fun onDisable() {
    if (mc.thePlayer == null)
        return

    blink()

    val faker = fakePlayer

    if (faker != null) {
        mc.theWorld?.removeEntityFromWorld(faker.entityId)
        fakePlayer = null
    }
}

@EventTarget
fun onPacket(event: PacketEvent) {
    val packet: IPacket = event.packet

    if (mc.thePlayer == null || disableLogger)
        return

    if (classProvider.isCPacketPlayer(packet)) // Cancel all movement stuff
        event.cancelEvent()

    if (classProvider.isCPacketPlayerPosition(packet) || classProvider.isCPacketPlayerPosLook(packet) ||
        classProvider.isCPacketPlayerBlockPlacement(packet) ||
        classProvider.isCPacketAnimation(packet) ||
        classProvider.isCPacketEntityAction(packet) || classProvider.isCPacketUseEntity(packet) || (cancelC0F.get() && classProvider.isCPacketConfirmTransaction(packet))) {
        event.cancelEvent()
        packets.add(packet)

        if(sendInValidC0F.get())
            mc.unwrap().connection?.networkManager?.sendPacket(CPacketConfirmTransaction(0,0,true))
    }
}

@EventTarget
fun onUpdate(event: UpdateEvent?) {
    val thePlayer = mc.thePlayer ?: return

    synchronized(positions) { positions.add(doubleArrayOf(thePlayer.posX, thePlayer.entityBoundingBox.minY, thePlayer.posZ)) }
    if (pulseValue.get() && pulseTimer.hasTimePassed(pulseDelayValue.get().toLong())) {
        blink()
        pulseTimer.reset()
    }
}

@EventTarget
fun onRender3D(event: Render3DEvent?) {
    val breadcrumbs = LiquidBounce.moduleManager.getModule(Breadcrumbs::class.java) as Breadcrumbs?
    val color = if (breadcrumbs!!.colorRainbow.get()) rainbow() else Color(breadcrumbs.colorRedValue.get(), breadcrumbs.colorGreenValue.get(), breadcrumbs.colorBlueValue.get())
    synchronized(positions) {
        GL11.glPushMatrix()
        GL11.glDisable(GL11.GL_TEXTURE_2D)
        GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA)
        GL11.glEnable(GL11.GL_LINE_SMOOTH)
        GL11.glEnable(GL11.GL_BLEND)
        GL11.glDisable(GL11.GL_DEPTH_TEST)
        mc.entityRenderer.disableLightmap()
        GL11.glBegin(GL11.GL_LINE_STRIP)
        RenderUtils.glColor(color)
        val renderPosX: Double = mc.renderManager.viewerPosX
        val renderPosY: Double = mc.renderManager.viewerPosY
        val renderPosZ: Double = mc.renderManager.viewerPosZ
        for (pos in positions) GL11.glVertex3d(pos[0] - renderPosX, pos[1] - renderPosY, pos[2] - renderPosZ)
        GL11.glColor4d(1.0, 1.0, 1.0, 1.0)
        GL11.glEnd()
        GL11.glEnable(GL11.GL_DEPTH_TEST)
        GL11.glDisable(GL11.GL_LINE_SMOOTH)
        GL11.glDisable(GL11.GL_BLEND)
        GL11.glEnable(GL11.GL_TEXTURE_2D)
        GL11.glPopMatrix()
    }
}

override val tag: String
    get() = packets.size.toString()

private fun blink() {
    try {
        disableLogger = true

        while (!packets.isEmpty()) {
            mc.netHandler.networkManager.sendPacket(packets.take())
        }

        disableLogger = false
    } catch (e: Exception) {
        e.printStackTrace()
        disableLogger = false
    }
    synchronized(positions) { positions.clear() }
}

}

Grim version

grimac-2.3.61.jar

Server version

1.8.8

Plugins

ViaVersion-4.9.2.jar grimac-2.3.61.jar

ManInMyVan commented 3 months ago

This is not detectable without flagging legit player, or having statistical checks, which would be out of scope for grim.

EclipsesDev commented 3 months ago

🤦

NoboKik commented 3 months ago

NO WAY????? GRIM BLINK HALAL BYPASS 2024 UNPATCHED PUNJABI DOWNLOAD NO VIRUS