Anti-aimbot


(Chruker) #1

Hi

I’ve been thinking of way to combat aimbotters, however I don’t know if it is worth trying to implement. I need some feedback.

Basicly what I’m thinking is tracking how fast the player’s aim is moving right before (like 10 server frames before) he shoots. One of the developer steps would require me to write a graph function like the lagometer one and then see how it looks. I got some more ideas which include distance to target, accuracy etc.

However I’ve only seen a few demo’s of aimbotters on the rampage, and they all seem to snap onto a player target. That is why I chose this approach. However is this how all aimbots works?

Also there could be some instances of false-positives.


(Lanz) #2

Some aimbots nowdays actually try to behave more lifelike. They don’t snap to head but as a fluid movement moves to the head, some even deliberately miss some shots to lower accuracy. Still they’re very accurate of course, but not as the older snap-to-head ones. Personally I think it would be hard to programatically do something fool prof with this method, as I see it, one false positive is one too many. You want to be 100% sure it’s an aimbot and doing that based on movement-to-head/time or on-target/time-to-shot-fired is quite a challenge. It would have to be set to timings not humanly possible, and those bots trying to hide themself would probably fall through.


(Shaderman) #3

I don’t know how those bots send their calculated movement/shooting to the game but shouldn’t it be possible to compare the real mouse movement (maybe on a lower level than bots do it) with the movement which happens in game?


(Magik) #4

Could try some mechanism based on “Bayesian Classifiers” (http://en.wikipedia.org/wiki/Naive_Bayesian_classifier), e.g. a system very similar to various spam detection approaches but for aiming classification. Of course you would have to define a function based on certain categories (like aiming speed or whatever) that maps aiming behaviour to some sort of “score”.
Such a system would have to be trained to aimbots and you either will not catch all the cheaters or get some false positives, depending on how hard you set the limits.
How well it works might require some field studies.


(Lanz) #5

Probability over time is of course a stronger solution. Still, if an aimbot almost behaves life like, like a very good player, but not over the top. How would you catch it by collecting more data?

I’m guessing the best result would be like a whiney player shouting CHEAT when he lost one time too many. And we have enough of those already, haven’t we? :smiley:

Maybe I’m just pessimistic though…


(Magik) #6

Guess basically it would be a constant challenge between one program trying to fake human behaviour as good as possible and the other trying to detect the flaws in this simulation as accurate as possible. :wink:


(brugal) #7

One thing I’ve wanted to try is plotting where someone was aiming when they fired their weapon. Add some code to CG_FireWeapon() to dump out player positions and angles, figure out who they were probably aiming at, and then calculate the x and y errors with respect to target’s origin.

For normal players you would expect some cloud like pattern. Simple aimbots that let the user pick a vector and add some x and y error values might end up showing a rectangular like shot pattern over time.

You might also be able to see when the aimbot’s fov kicks in. The outside picture would be the user’s regular shot pattern, maybe some mostly blank space, and then the aimbot’s pattern inside.


(squadjot) #8

Guess basically it would be a constant challenge between one program trying to fake human behaviour as good as possible and the other trying to detect the flaws in this simulation as accurate as possible.

Atleast it will be harder to make an aimbot… and that should result in less aimbots… and that will ease the registrering of bots on the loose.


(SCDS_reyalP) #9

If the heuristic, or the mod containing the heuristic is public, it would be very easy for cheat makers to tune their cheats to fall below whatever the detection threshold is.

One way to deal with the risk of false postives is to use the heuristic to trigger other anti-cheat measures, rather than just kicking or not. For example you could trigger screenshot requests and a listing clients cvars (most of the current cheats use a whole bunch of quit obvious cvar names, with varying prefixes.) You could also use it to alert any admins of suspect players, or trigger ettv demo recording for later review.

(Some people argue that if an aimbot is “humanized” to the point that it is comperable to the best players in the world, then you shouldn’t care about it. I don’t subscribe that myself.)


(carnage) #10

one thing you might want to look at is the accuracy when tracking objects behind a solid wall

anyone without an aimbot will setrainlt pick up a lot of inacuracy but thye botter should still get a pretty good lock asuming that its still active without a direct line of sight to the player


(P4nth3r) #11

Hmmm I’ve seen aimbots that only react when a play is in sight.
But I’m no expert in the matter


(Chruker) #12

I’m currently using cg.predictedPlayerState.viewangles to draw a graph of the players rotation speed, however I’m not sure if it is the best place to grab the angles - also I need to correct for the rollover at 360 to 0.

cg.snap->ps.delta_angles sounds like what I want, however it seems to not be updated during the map? It only seems to update when I hit map_restart. At least it only changes when ever I hit map_restart :slight_smile:


(squadjot) #13

I think its an interesting project/idea

if i had to make an aimbot… i would use the aim of the user…and combine it with help from the aimbot… so the user still has to aim… the aimbot just makes the finalizing…
that would be a bitch to detect… some aimbots are very hard to see already…

what about the fact that almost all aimbots gives you about 80-95% headshots… and a overall accuracy between 80-95% …no players get that. normally i’d say a skilled player will have about 50% accuracy… most “pro” players have about 45% accuracy…

(yeah if you have played a server for 1 minute…and only shot a few shots, maybe youll be able to get theese numbers…but not through a complete match, not if ure playing “normally”)


(fretn) #14

hit some air, and your acc will be low enough to look realistic

maybe you should check the acc while in combat, calculate it between the first and the last hit


(Shanks) #15

That’s not true. A lot of aimbots miss a lot so they can’t be detected as easily. Do you think the aimbot authors would want to have to redesign their bot every few days/weeks?

Sldo judging a player based on accuracy is silly. A player who gets more headshots will usually have a lower accuracy than a player who gets more bodyshots…


(iDan) #16

Aimbots work by locking onto a specific colour, for example the Allies skin as it can tell whats what basicaly
if xhair = skin.pk3 then
Movecursor.dll to head.

It uses Hotkeys basicaly Keyhooks I seen a programme in visual basic tutorial I will try find it if you want.


(iDan) #17

Probably not what we want here really, nice try though!


(Fusen) #18

I dunno what aimbotters you have watched but the average accuracy for a aimbotter on pub server is 40-60%

it’s no where near as high as you have listed, and pretty much all recent aimbots only lock on when the player is in sight(although this can be toggled) and also use a fov around the target, so you have to move the crosshair to say within a certain range either side of the player before you can lock on(this can also be increased/decreased)

pay for hacks will also have transition human aim, instead of going straight to the head it will go in steps and slowly (slower than straight to head anyway) move towards the target instead of snapping


(carnage) #19

i dont see how this could be used to tell in game if its any differnt from a skiled player but i do have one idea

could there be some kind of background game running that ignores mouse input but could still be effected by aimbot so could hit a target slghtly out of the players crosshairs. If tis target takes damage then you know. could trigger the test to work when the player shoots as well since if he is on a toggle thats when he will have the aimbot on

that wont work if the aimbot runs on colour tracking thing though. perhaps if the images can be sent to the video card but not fefreshed to the screen then the player wont be aware of what is happening beihnd his static screen. Then make the last screen shown one with some kind of conection probelm showing so they are not sure what is happening again

the admin can then in the console target a player to be scaned. this will ait untill he starts shooting a few rounds so his aimbot has kicked in then freezes and checks him. the check should not take more then a second of two. if he is found guilty then leave him for a random time then kick him so that they dont start to asosiate the screen freezing with aimbot scaning

this method will result in a few unfair deaths when u freee player in combat but if you are getting a nice aimbot ban list then its worth it


(Lanz) #20

Why the fuck is there an aimbot tutorial in here?? We’re discussing how to limit them, not to give people ideas on how to create them. REMOVE!

Sure it’s a script kiddy that wrote it who thinks trigonometry is advanced math but still.