CCBlueX Forum

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    [Kotlin] HackerDetector

    Kotlin/Java
    9
    11
    879
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • qwq Liulihaocai
      qwq Liulihaocai last edited by

      DETECT SIGMA HATARS

      code below...

      package net.ccbluex.liquidbounce.features.module.modules.player
      
      import net.ccbluex.liquidbounce.event.EventTarget
      import net.ccbluex.liquidbounce.event.PacketEvent
      import net.ccbluex.liquidbounce.event.WorldEvent
      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.utils.EntityUtils
      import net.ccbluex.liquidbounce.utils.timer.MSTimer
      import net.ccbluex.liquidbounce.value.BoolValue
      import net.ccbluex.liquidbounce.value.IntegerValue
      import net.minecraft.client.Minecraft
      import net.minecraft.entity.Entity
      import net.minecraft.entity.EntityLivingBase
      import net.minecraft.entity.player.EntityPlayer
      import net.minecraft.network.play.server.S0BPacketAnimation
      import net.minecraft.network.play.server.S14PacketEntity
      import net.minecraft.network.play.server.S18PacketEntityTeleport
      import net.minecraft.network.play.server.S19PacketEntityStatus
      import net.minecraft.potion.Potion
      import net.minecraft.util.AxisAlignedBB
      import kotlin.math.abs
      import kotlin.math.atan2
      import kotlin.math.pow
      import kotlin.math.sqrt
      
      
      @ModuleInfo(name = "HackerDetector", description = "Detect SIGMA Hackers.", category = ModuleCategory.PLAYER)
      class HackerDetector : Module() {
          private val GRAVITY_FRICTION = 0.9800000190734863
      
          private val combatCheck=BoolValue("Combat",true)
          private val movementCheck=BoolValue("Movement",true)
          private val debugMode=BoolValue("Debug",false)
          private val report=BoolValue("AutoReport",true)
          private val vlValue=IntegerValue("VL",300,100,500)
      
          private val datas=HashMap<EntityPlayer,HackerData>()
          private val hackers=ArrayList<String>()
      
      //    @EventTarget
      //    fun onUpdate(event: UpdateEvent){
      //        //this takes a bit time so we do it async
      //        if(movementCheck.get()) {
      //            Thread { checkMove() }.start()
      //        }
      //    }
      
          @EventTarget
          fun onPacket(event: PacketEvent){
              if(event.packet is S19PacketEntityStatus){
                  val packet=event.packet
                  if(combatCheck.get()&&packet.opCode.toInt()==2){
                      Thread { checkCombatHurt(packet.getEntity(mc.theWorld)) }.start()
                  }
              }else if(event.packet is S0BPacketAnimation){
                  val packet=event.packet
                  val entity=mc.theWorld.getEntityByID(packet.entityID)
                  if(entity !is EntityPlayer||packet.animationType!=0) return
                  val data=datas[entity] ?: return
                  data.tempAps++
              }else if(movementCheck.get()){
                  if(event.packet is S18PacketEntityTeleport){
                      val packet=event.packet
                      val entity=mc.theWorld.getEntityByID(packet.entityId)
                      if(entity !is EntityPlayer) return
                      Thread{ checkPlayer(entity) }.start()
                  }else if(event.packet is S14PacketEntity){
                      val packet=event.packet
                      val entity=packet.getEntity(mc.theWorld)
                      if(entity !is EntityPlayer) return
                      Thread{ checkPlayer(entity) }.start()
                  }
              }
          }
      
          override fun onEnable() {
              datas.clear()
              hackers.clear()
          }
      
          @EventTarget
          fun onWorld(event: WorldEvent){
              datas.clear()
          }
      
          fun isHacker(entity: EntityLivingBase):Boolean{
              if(entity !is EntityPlayer) return false
              return hackers.contains(entity.name)
          }
      
          //onupdate
      //    private fun checkMove(){
      //        for(entity in mc.theWorld.loadedEntityList){
      //            if(entity !is EntityPlayer) continue
      //            checkPlayer(entity)
      //        }
      //    }
      
          private fun checkPlayer(player: EntityPlayer){
              if(player.equals(mc.thePlayer)||EntityUtils.isFriend(player)) return
              if(datas[player]==null) datas[player] = HackerData(player)
              val data=datas[player] ?: return
              data.update()
              if(data.aliveTicks<20) return
      
              //settings
              var minAirTicks = 10
              if(player.isPotionActive(Potion.jump)){
                  minAirTicks+=player.getActivePotionEffect(Potion.jump).amplifier*3
              }
              val maxMotionY = 0.47 //for strict check u can change this to 0.42
              val maxOffset = 0.07
              var passed=true
              
              if(player.hurtTime>0){
                  //velocity
                  if (player.hurtResistantTime in 7..11
                      && player.prevPosX == player.posX && player.posZ == player.lastTickPosZ
                      && !mc.theWorld.checkBlockCollision(player.entityBoundingBox.expand(0.05, 0.0, 0.05))) {
                      flag("velocity",50,data,"NO KNOCKBACK")
                  }
                  if (player.hurtResistantTime in 7..11
                      && player.lastTickPosY == player.posY) {
                      flag("velocity",50,data,"NO KNOCKBACK")
                  }
                  return
              }
      
              //phase
      //        if(mc.theWorld.checkBlockCollision(player.entityBoundingBox)){
      //            flag("phase",50,data,"COLLIDE")
      //            passed=false
      //        }
      
              //killaura from jigsaw
              if (data.aps >= 10) {
                  flag("killaura",30,data,"HIGH APS(aps=${data.aps})")
                  passed=false
              }
              if (data.aps > 2 && data.aps == data.preAps && data.aps != 0) {
                  flag("killaura",30,data,"STRANGE APS(aps=${data.aps})")
                  passed=false
              }
              if (abs(player.rotationYaw - player.prevRotationYaw) > 50 && player.swingProgress != 0F
                  && data.aps >= 3) {
                  flag("killaura",30,data,"YAW RATE(aps=${data.aps},yawRot=${abs(player.rotationYaw - player.prevRotationYaw)})")
                  passed=false
              }
      
              //flight
              if(player.ridingEntity==null&&data.airTicks>(minAirTicks/2)){
                  if (abs(data.motionY - data.lastMotionY) < (if(data.airTicks >= 115){1E-3}else{5E-3})){
                      flag("fly",20,data,"GLIDE(diff=${abs(data.motionY - data.lastMotionY)})")
                      passed=false
                  }
                  if(data.motionY > maxMotionY){
                      flag("fly",20,data,"YAXIS(motY=${data.motionY})")
                      passed=false
                  }
                  if(data.airTicks > minAirTicks&&data.motionY>0){
                      flag("fly",30,data,"YAXIS(motY=${data.motionY})")
                      passed=false
                  }
                  //gravity check from ACR
      //            val gravitatedY = (data.lastMotionY - 0.08) * GRAVITY_FRICTION
      //            val offset = abs(gravitatedY - data.motionY)
      //            if (offset > maxOffset) {
      //                flag("fly",15,data,"GRAVITY(offset=$offset)")
      //                passed=false
      //            }
              }
      
              //speed
              val distanceXZ=abs(data.motionXZ)
              if(data.airTicks==0){ //onGround
                  var limit = 0.37
                  if(data.groundTicks < 5) limit += 0.1
                  if(player.isBlocking) limit *= 0.45
                  if(player.isSneaking) limit *= 0.68
                  if(player.isPotionActive(Potion.moveSpeed)){ //server will send real player potionData?i hope that
                      limit += player.getActivePotionEffect(Potion.moveSpeed).amplifier
                      limit *= 1.5
                  }
                  if (distanceXZ > limit) {
                      flag("speed",20,data,"GROUND SPEED(speed=$distanceXZ,limit=$limit)")
                  }
              }else{
                  val multiplier = 0.985
                  var predict = 0.36 * multiplier.pow(data.airTicks + 1)
                  if (data.airTicks >= 115)
                      predict = 0.08.coerceAtLeast(predict);
                  var limit=0.05
                  if(player.isPotionActive(Potion.moveSpeed)){
                      predict += player.getActivePotionEffect(Potion.moveSpeed).amplifier * 0.05
                      limit *= 1.2
                  }
                  if(player.isPotionActive(Potion.jump)) {
                      predict += player.getActivePotionEffect(Potion.jump).amplifier * 0.05
                  }
                  if(player.isBlocking)
                      predict *= 0.7
      
                  if (distanceXZ - predict > limit) {
                      flag("speed",20,data,"AIR SPEED(speed=$distanceXZ,limit=$limit,predict=$predict)")
                  }
              }
      //        if (abs(data.motionX) > 0.42
      //            || abs(data.motionZ) > 0.42){
      //            flag("speed",30,data,"HIGH SPEED")
      //            passed=false
      //        }
      //        if (player.isBlocking && (abs(data.motionX) > 0.2 || abs(data.motionZ) > 0.2)) {
      //            flag("speed",30,data,"HIGH SPEED(BLOCKING)") //blocking is just noslow lol
      //            passed=false
      //        }
      
              //reduce vl
              if(passed){
                  data.vl-=1
              }
          }
      
          private fun flag(type: String,vl: Int,data: HackerData,msg: String){
              if(!data.useHacks.contains(type)) data.useHacks.add(type)
              //display debug message
              if(debugMode.get()){
                  chat("§f${data.player.name} §euse §2$type §7$msg §c${data.vl}+${vl}")
              }
              data.vl+=vl
      
              if(data.vl>vlValue.get()){
                  var use=""
                  for(typ in data.useHacks){
                      use+="§a$typ§2,"
                  }
                  use=use.substring(0,use.length-3)
                  chat("§f${data.player.name} §eusing hack $use")
                  data.vl=-vlValue.get()
      
                  //autoreport only redesky
                  val name=data.player.name
                  if(report.get()&&!hackers.contains(name)){
                      mc.thePlayer.sendChatMessage("/reportar $name")
                      hackers.add(name)
                  }
              }
          }
      
          private fun checkCombatHurt(entity: Entity){
              if(entity !is EntityLivingBase) return
              var attacker:EntityPlayer?=null
              var attackerCount=0
      
              for(worldEntity in mc.theWorld.loadedEntityList){
                  if(worldEntity !is EntityPlayer||worldEntity.getDistanceToEntity(entity)>7||worldEntity.equals(entity)) continue
                  attackerCount++
                  attacker=worldEntity
              }
      
              //multi attacker may cause false result
              if(attackerCount!=1) return
              if(attacker!! == entity||EntityUtils.isFriend(attacker)) return //i and my friend is hacker lol
              val data=datas[attacker] ?: return
      
              //reach check
              val reach=attacker.getDistanceToEntity(entity)
              if(reach>3.7){
                  flag("killaura",70,data,"(reach=$reach)")
              }
      
              //aim check
              val yawDiff=calculateYawDifference(attacker,entity)
              if(yawDiff>50){
                  flag("killaura",100,data,"(yawDiff=$yawDiff)")
              }
          }
      
          private fun calculateYawDifference(from: EntityLivingBase, to: EntityLivingBase): Double {
              val x = to.posX - from.posX
              val z = to.posZ - from.posZ
              return if (x == 0.0 && z == 0.0) {
                  from.rotationYaw.toDouble()
              } else {
                  val theta = atan2(-x, z)
                  val yaw=Math.toDegrees((theta + 6.283185307179586) % 6.283185307179586)
                  abs(180 - abs(abs(yaw - from.rotationYaw) - 180));
              }
          }
      }
      
      class HackerData(val player:EntityPlayer){
          var aliveTicks=0
          // Ticks in air
          var airTicks = 0
      
          // Ticks on ground
          var groundTicks = 0
      
          // motion of the movement
          var motionX = 0.0
          var motionY = 0.0
          var motionZ = 0.0
          var motionXZ = 0.0
      
          // Previous motion of the movement
          var lastMotionX = 0.0
          var lastMotionY = 0.0
          var lastMotionZ = 0.0
          var lastMotionXZ = 0.0
      
          // combat check
          var aps = 0
          var preAps = 0
          var tempAps = 0
          private val apsTimer=MSTimer()
      
          var vl=0
          var useHacks=ArrayList<String>()
      
          fun update(){
              aliveTicks++
              if (apsTimer.hasTimePassed(1000)) {
                  preAps = aps;
                  aps = tempAps;
                  tempAps = 0;
              }
      
              if(calculateGround()){
                  groundTicks++
                  airTicks=0
              }else{
                  airTicks++
                  groundTicks=0
              }
      
              this.lastMotionX = this.motionX
              this.lastMotionY = this.motionY
              this.lastMotionZ = this.motionZ
              this.lastMotionXZ = this.motionXZ
              this.motionX = player.posX-player.prevPosX
              this.motionY = player.posY-player.prevPosY
              this.motionZ = player.posZ-player.prevPosZ
              this.motionXZ = sqrt(motionX*motionX + motionZ*motionZ)
          }
      
          private fun calculateGround(): Boolean {
              val playerBoundingBox = player.entityBoundingBox
              val blockHeight = 1
              val customBox = AxisAlignedBB(playerBoundingBox.maxX, player.posY-blockHeight, playerBoundingBox.maxZ, playerBoundingBox.minX, player.posY, playerBoundingBox.minZ)
              return Minecraft.getMinecraft().theWorld.checkBlockCollision(customBox)
          }
      }
      
      
      DreamWasFucked ENDER1355 2 Replies Last reply Reply Quote 3
      • DreamWasFucked
        DreamWasFucked Banned @qwq Liulihaocai last edited by

        @qwq-liulihaocai YEEES SIGMA ANTICHEET NO MORA SIGMA HATARS!!

        1 Reply Last reply Reply Quote 0
        • Advanced Skidder
          Advanced Skidder last edited by

          Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

          ? Hackerman 2 Replies Last reply Reply Quote 1
          • ?
            A Former User @Advanced Skidder last edited by

            @advanced-skidder said in [Kotlin] HackerDetector:

            Hi hackerman 😄 (i know you are hackerman feat: an fdp user)

            you are mega retarded hackerman is dumb asf

            Advanced Skidder 1 Reply Last reply Reply Quote 2
            • Advanced Skidder
              Advanced Skidder @Guest last edited by

              @chocopiexd Capture.PNG
              sure?

              ? 1 Reply Last reply Reply Quote 0
              • ?
                A Former User @Advanced Skidder last edited by

                @advanced-skidder said in [Kotlin] HackerDetector:

                @chocopiexd Capture.PNG
                sure?

                liulihaocai 100% isn't hackerman

                1 Reply Last reply Reply Quote 0
                • Hackerman
                  Hackerman @Advanced Skidder last edited by

                  @advanced-skidder yes thats definitely me

                  Advanced Skidder 1 Reply Last reply Reply Quote 0
                  • Advanced Skidder
                    Advanced Skidder @Hackerman last edited by

                    @hackerman POG

                    1 Reply Last reply Reply Quote 0
                    • BobikHatar
                      BobikHatar last edited by

                      HATAR DETECTOR EZ

                      1 Reply Last reply Reply Quote 0
                      • ENDER1355
                        ENDER1355 Banned @qwq Liulihaocai last edited by

                        @qwq-liulihaocai YES ANTIHATAR RELEASED OMG

                        END3R1355 1 Reply Last reply Reply Quote 0
                        • END3R1355
                          END3R1355 Banned @ENDER1355 last edited by

                          @ender1355 no

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          About
                          • Terms of Service
                          • Privacy Policy
                          • Status
                          • Contact Us
                          Downloads
                          • Releases
                          • Source code
                          • License
                          Docs
                          • Tutorials
                          • CustomHUD
                          • AutoSettings
                          • ScriptAPI
                          Community
                          • Forum
                          • Guilded
                          • YouTube
                          • Twitter
                          • D.Tube