Poll

Do you like that idea?

Yes
11 (61.1%)
I don't know
2 (11.1%)
I don't care
4 (22.2%)
No
1 (5.6%)

Total Members Voted: 18

Author Topic: AntiTeleport and AntiSuperman  (Read 11230 times)

0 Members and 1 Guest are viewing this topic.

Offline rainrider

  • Soldier
  • **
  • Posts: 145
    • rrhp
AntiTeleport and AntiSuperman
« on: June 12, 2006, 01:20:03 am »
Umm, EnEsCe made few days ago new server (offtopic - Michal said he doesn't need any help -.-) with antimassflag. But antimassflag isn't all... you can simply make antiteleport and antisuperman in one mechanism. Just store in memory coordinates of players in few 'shelves' (arrays, like COORD LastPlayersCoord[32][30]) and move all array data to left by 1 on every server loop step. First XY would be deleted, and the last would be changed with current XY of every player. Now you check that player has moved more than, for example, 100px by comparing abs(LastPlayersCoord[loopstep][29].x&y-LastPlayersCoord[loopstep][0].x&y)>100. If so, server would vote kick. Dunno that each X & Y should be abs()ed, but probably yes. Nope, that method got one little exploit, but I won't explain it couse of possiblement that some cheaters are reading this text. Example in c++ with calculation of PlayerLastCoord size:

Code: [Select]
/* global */
#define TPSIZE 200
#include <windows.h> /* coord, abs() */
COORD PlayerLastCoord [ 32 ] [ 30 ];
unsigned short int iPlayerID;
unsigned short int iLoopStep;

/* in server loop */
for ( iPlayerID = 0; iPlayerID < 32; iPlayerID ++ )
 {
  for ( iLoopStep = 1; iLoopStep < sizeof ( PlayerLastCoord [ iPlayerID ] ) / sizeof ( COORD ); iLoopStep ++ )
    PlayerLastCoord [ iPlayerID ] [ iLoopStep - 1 ] = PlayerLastCoord [ iPlayerID ] [ iLoopStep ];
  PlayerLastCoord [ iPlayerID ] [ sizeof ( PlayerLastCoord [ iPlayerID ] ) / sizeof ( COORD ) - 1 ] = /*global player xy*/ PlayerCoords [ iPlayerID ];
  if ( abs ( PlayerLastCoord [ iPlayerID ] [ 0 ] . X - PlayerLastCoord [ iPlayerID ] [ sizeof ( PlayerLastCoord [ iPlayerID ] ) / sizeof ( COORD ) - 1 ] . X ) > TPSIZE ||
       abs ( PlayerLastCoord [ iPlayerID ] [ 0 ] . Y - PlayerLastCoord [ iPlayerID ] [ sizeof ( PlayerLastCoord [ iPlayerID ] ) / sizeof ( COORD ) - 1 ] . Y ) > TPSIZE
     )
    /*vote player cheats!*/
 }

Offline EnEsCe

  • Retired Soldat Developer
  • Flamebow Warrior
  • ******
  • Posts: 3101
  • http://enesce.com/
    • [eC] Official Website
Re: AntiTeleport and AntiSuperman
« Reply #1 on: June 12, 2006, 01:31:51 am »
Trust me, I did that. The code is in the server, but all commented out.
Simply because, it was too sensitive. If you respawned, you were cheating. If you changed team, you were cheating. If you lagged, you were cheating. If you M79 boost, you are cheating. Sure, you can make fix that, but then all 'they' have to do is decrease the speed of their 'thing'.

An anti-teleport is in the works, but might be some time.

Offline bja888

  • Flagrunner
  • ****
  • Posts: 745
  • Working
    • Bja888.com
Re: AntiTeleport and AntiSuperman
« Reply #2 on: June 12, 2006, 03:03:07 am »
What is this? How are you getting the x and y of the players?

Offline EnEsCe

  • Retired Soldat Developer
  • Flamebow Warrior
  • ******
  • Posts: 3101
  • http://enesce.com/
    • [eC] Official Website
Re: AntiTeleport and AntiSuperman
« Reply #3 on: June 12, 2006, 03:14:02 am »
bja this is out of your league, go back to the lounge.

Offline bja888

  • Flagrunner
  • ****
  • Posts: 745
  • Working
    • Bja888.com
Re: AntiTeleport and AntiSuperman
« Reply #4 on: June 12, 2006, 03:18:40 am »
I'm always looking for new concepts and techniques to improve the efficiency of my programming practices.


Offline FliesLikeABrick

  • Administrator
  • Flamebow Warrior
  • *****
  • Posts: 6144
    • Ultimate 13 Soldat
Re: AntiTeleport and AntiSuperman
« Reply #5 on: June 12, 2006, 06:02:21 am »
yeah, I'm fairly certain this is close to what MM used in the first generations of antiteleport, and it caused just about anyone who lagged or m79 jumped to get kicked for possible cheat.


I suppose you could do more work and code in extra handling for respawns, lag spikes, etc.... but that's really up to those who handle the code.

Offline KeFear

  • Soldier
  • **
  • Posts: 181
  • ARSSE Creator
Re: AntiTeleport and AntiSuperman
« Reply #6 on: June 12, 2006, 07:56:04 am »
well, fighting against cheaters is an important and tough thing, but i think fixing bugs is more important.

Offline rainrider

  • Soldier
  • **
  • Posts: 145
    • rrhp
Re: AntiTeleport and AntiSuperman
« Reply #7 on: June 12, 2006, 08:20:36 am »
For spawning , team changing etc - server could check before voting that player is spectator / is near spawnpoint / is just spawning (he's untouchable a moment, so server has already implemented spawn detection). If so, don't vote. For m79 jumps - just increase [32][30] to something like [32][60] and TPSIZE too.

@next: laggy servers with eight players or more are voting already :E
« Last Edit: June 12, 2006, 08:32:34 am by rainrider »

Offline FliesLikeABrick

  • Administrator
  • Flamebow Warrior
  • *****
  • Posts: 6144
    • Ultimate 13 Soldat
Re: AntiTeleport and AntiSuperman
« Reply #8 on: June 12, 2006, 08:22:09 am »
I was talking to enesce on MSN about this before I went to work.  He said he compensated fine for spawning/team changing and everything else, but lag was the one that was damned hard to deal with

Offline boer

  • Major
  • *
  • Posts: 99
Re: AntiTeleport and AntiSuperman
« Reply #9 on: June 12, 2006, 01:19:02 pm »
just an idea,
if (the players average velocity (measured over say 10 sec) >
terminal speed  + (max_force generated by player) + sensitivity  )

  then player is cheating , simply because a player can't keep up that velocity for so long only by jetting/moving.

Offline FliesLikeABrick

  • Administrator
  • Flamebow Warrior
  • *****
  • Posts: 6144
    • Ultimate 13 Soldat
Re: AntiTeleport and AntiSuperman
« Reply #10 on: June 12, 2006, 01:39:41 pm »
this is exactly what we've been talking about, and the real killer of that idea is the fact that lag can make people appear to move very, very quickly. Please read the rest of the posts before responding

Offline GAMEOVER

  • Camper
  • ***
  • Posts: 303
Re: AntiTeleport and AntiSuperman
« Reply #11 on: June 12, 2006, 08:17:22 pm »
There IS a solution to hacks but people dont want to do much work, antihacks can be so easyly made and distributed. For example MM could add some sort of Soldat update in the next version that will auto download this antihack made by someone like enesce or himself. Simply put you will only see the hackers themselves running around using their own hacks instead of massively distributed garbage and by the time someone does get it in there hands, wam, another update..

Offline CheeSeMan.

  • Flagrunner
  • ****
  • Posts: 731
  • WOOT SLIPPERY PICKLES
Re: AntiTeleport and AntiSuperman
« Reply #12 on: June 13, 2006, 11:04:44 am »
What about some type of program that knows what the Memory addresses value is suppose to be, if its anything different it deduces that the player is hacking.
Though i see that this wouldn't work for teleport as your x and y is changing all the time without teleport hacks. pfffffff.... 
*Goes off to think*
Banana Banging since summer 2008!     
cB. Cheeky Bananas                
#CheekyB.Soldat

Offline Lapis Lazuli

  • Global Moderator
  • Camper
  • *****
  • Posts: 401
  • One Hand Clapping
Re: AntiTeleport and AntiSuperman
« Reply #13 on: June 15, 2006, 09:39:23 am »
The solution for lag, consider this:

Compare the players speed and location every so often to detect sudden changes that are too unreasonable, and rather than simply kick him, add it to a variable. Each time the player does something outlandish, increase it again. The variable would slowly decrease over time. When it reaches a certain point, bam, they're kicked and banned for some amount of time. The limit could be set by server operators.

If they're lagging bad enough to consistantly set off the cheat detection they need a new server any way.
Steam ¤ Skype ¤ Soldat Wiki ¤ Need Help?
"Every thought you produce, anything you say, any action you do,
it bears your signature." - Thich Nhat Hanh

Offline chrisgbk

  • Inactive Staff
  • Veteran
  • *****
  • Posts: 1739
Re: AntiTeleport and AntiSuperman
« Reply #14 on: June 15, 2006, 03:59:50 pm »
The problem on top of that is the various bugs that exist, that allow players to, under normal conditions, move at extremely high speeds. Not to mention m79 jumping, if someone does it constantly. So either you have to: a) reduce sensitivity enough that innocent people won't get caught, which has a side effect of guaranteeing hackers that as long as they dont exceed a certain speed they are safe, or b) allow normal play to possibly get flagged as cheating and ban innocent people. Neither of those solutions is optimal.

Offline Wormdundee

  • Soldier
  • **
  • Posts: 162
  • Ruger what?
Re: AntiTeleport and AntiSuperman
« Reply #15 on: June 16, 2006, 01:31:38 am »
Yes, there are certain times, when an explosion hits at just the right time in the right place. Then, you get thrown at insane speeds in some direction.

It's possible to literally get thrown across an entire map through this and it would probably be detected as cheating by any possible system.

Join Date: November 3, 2002

Offline JBL

  • Major
  • *
  • Posts: 67
  • Map Maker
Re: AntiTeleport and AntiSuperman
« Reply #16 on: June 16, 2006, 11:49:57 am »
I dont understand how hackers create those like amazing hacks. I think that they should not win, because they r retards... smart retards :D But still, FLAB and MM and EnEsCe are smarter! They shall win!!! :D


Offline rainrider

  • Soldier
  • **
  • Posts: 145
    • rrhp
Re: AntiTeleport and AntiSuperman
« Reply #17 on: June 17, 2006, 06:57:30 pm »
Maybe (for superflying) check xy velocities, not xy positions and if velocity after 5-10 loop steps did decrease by less than aaa and didn't increase more than bbb, kick() ? Or (for both teleport and superflying) if ( OldX + OldXVelocity + LagCorrection * ( OldXVelocity ? 1 : - 1 /* for moving to left and right..*/ ) < NewX || /*the same for y*/ ) kick()
omg too much c++

Offline chrisgbk

  • Inactive Staff
  • Veteran
  • *****
  • Posts: 1739
Re: AntiTeleport and AntiSuperman
« Reply #18 on: June 18, 2006, 03:35:35 pm »
When you check the differences between positions, you are implicitly checking velocity, since velocity is just a change in position over time.

There is still the issue of sensitivity, a hacker can STILL remain under a certain speed without getting caught, and due to bugs someone can still exceed limits under normal play conditions and get falsely flagged.


JBL, most(not all) of the hackers who make hacks don't know that much, they are basically script kiddies who can use one tool to find a number, put it into another tool that lets them modify that value, and there you go you have a hack.


The ultimate reality of the situation is that, because the CLIENT has absolute control over position, it will never be possible to prevent this kind of hacking. The only way these kinds of hacks will ever cease to exist is if Soldat's netcode is recoded so that the server has total control over positions, like Quake/Half-Life/Doom/etc.

Offline DeMo

  • Soldier
  • **
  • Posts: 127
  • Stay Metal! \m/
    • Encoder 2002
Re: AntiTeleport and AntiSuperman
« Reply #19 on: June 19, 2006, 07:09:40 pm »
There are lots of cheats out there.. antibink, antidelay, infinite jets, infinite ammo, instant reload. This  stuff is controlled by the client, it can't be checked by the server.
In brazilian servers we only see people teleporting due to high pings, we rarely see people with good pings teleporting (hacks) or using speedhacks. Massflag too, I've only seen it once.

But everyday I see some kid with a binkless/delayless barrett, it's much more common.
Some kind of antihack (as GAMEOVER said) would be a better solution because it would block all hacks at once. At least the public hacks could be easily blocked.

Soldat already detects some memory scanners, but there are modified versions that work.
Also, most of the public cheats are made with cheat generating tools, and those can also be blocked.

So, Michal could update the client more often to block these cheats or maybe he could make a separate anticheat module, something that runs on the background and downloads updated detections over the net.

<@Evil-Ville> Expect a picture of Chakra` holding his fleshlight soon!