PDA

View Full Version : AntiTweak 4.2


SesioN
21st May, 2007, 01:30 AM
Download: http://sesion.active-servers.com/ut/AntiTweakV42.zip

Update in 4.2:

A wall hack was brought to my attention a couple days ago (thanks to the contributor). It can be seen here:

http://sesion.active-servers.com/ut/wallhack.jpg

This bypasses all cheat protection prior to AT 4.2. Server admins should update to the latest to prevent these cheats.

A|ice
23rd May, 2007, 01:25 AM
Is there a website from the developer of this so we will know what the alerts mean?

I have the following AntiTweak Alert that is kicking everyone off my server, including me...and I have no clue what a Big Deemer Tweak is...let alone where to find out how to fix it.
It says ***AntiTweak Alert*** Player was kicked for Big deemer Tweak (Details: Server's=1.000000, Player's=2.000000).

?????????

There's nothing in the readme that explains what it kicks for.

A|ice

A|ice
23rd May, 2007, 06:58 AM
I've searched the 'net this evening and I cannot find anything in reference to what a big deemer tweak is...I've also searched all my .ini's and can't find anything in reference to it there either.

Has anyone a clue as to what a big deemer tweak is? lol. I didn't know u could do anything with a redeemer that the server didn't allow u to do.

=\

A|ice

dodgeball
23rd May, 2007, 11:43 AM
foreach P.Level.AllActors(Class'WarheadLauncher',deemer)
{
if ( (deemer.DrawScale > DeemerDS) && (DeemerDS != 0) )
{
return "Big Deemer Tweak" $ " (Details: Server's=" $ string(DeemerDS) $ " , Player's=" $ string(deemer.DrawScale) $ ")";
} else {
if ( (deemer.Mesh != deemermesh) && (deemermesh != None) && (deemer.Mesh != None) && (deemer.Mesh != LodMesh'WarHead') )
{
return "Altered Powerup Mesh Tweak" $ " (Details: Server's=" $ string(deemermesh) $ " , Player's=" $ string(deemer.Mesh) $ ")";
}
}
}

Just_Me
23rd May, 2007, 04:32 PM
So if the server does the same foreach iteration and is only storing one value. If the level has two WarheadLaunchers. The server will store the value of the last WarHeadLauncher in the iteration. Now if both WarheadLaunchers do not share the same value being checked, ie. WarheadLauncher (1) has a drawscale value of 2.0 and WarheadLauncher (2) has a drawscale of 1.0. Everyone on the server will be kicked for the first WarheadLauncher's drawscale. Which is probably the problem that is being run into.

A|ice
23rd May, 2007, 05:48 PM
Okay...I don't know much about code...but what I'm guessing you are saying is that this is a problem with AntiTweak...it's seeing either two 'deemers that are in the map with different values...and it's holding onto the value from the first one (which is 1.0).

But, I wonder why it kicks as soon as I try to join the map? Why would it see me with a value of 2.0 before I even pick up a 'deemer?

Btw, this is a map with the "Fighter Jets" in it that it kicked me out of (which I believe are really 'deemers...so I'm thinking that's where the difference in values are).

Is this Kevin reachable? I can't find a contact for him.

thanks,
A|ice

Azura
23rd May, 2007, 08:31 PM
So if the server does the same foreach iteration and is only storing one value. If the level has two WarheadLaunchers. The server will store the value of the last WarHeadLauncher in the iteration. Now if both WarheadLaunchers do not share the same value being checked, ie. WarheadLauncher (1) has a drawscale value of 2.0 and WarheadLauncher (2) has a drawscale of 1.0. Everyone on the server will be kicked for the first WarheadLauncher's drawscale. Which is probably the problem that is being run into.

This may be a little off topic but one of the things I don't like about AntiTweak is that it spams warnings like this. Also, from what you're saying, it isn't making a distinction between players. Ideally there should be an array to temporary store values for a maximum of 32 players.

How could you code things such that only one or a couple of warnings are displayed ? Pseudo code would do if you know of a way.

chicken-
24th May, 2007, 03:41 PM
This is an easy fix and I'm sure Kev will fix it. Kev (the maker of antitweak) plays in the competitive CTF community (prounreal), therefor we don't use redeemers and he probably forgot to think about maps that might have extra big redeemers in them.

In the original release a couple years ago, people got kicked on bollwerk because the mapmaker added a huge amp to the map, so it sets everybodys drawscale on the amp bigger than it normally is. He fixed it by auto setting all the powerup scales to 1 on the loading of antitweak, so he should just have to add the deemer to that list of things to reset to 1 drawscale. I'll let him know.

A|ice
24th May, 2007, 05:51 PM
Thanks chicken.
This is the first time I've used this on my server, I'd like to continue if it's catching cheats that other CP isn't picking up.

A|ice

Just_Me
25th May, 2007, 03:31 AM
This may be a little off topic but one of the things I don't like about AntiTweak is that it spams warnings like this. Also, from what you're saying, it isn't making a distinction between players. Ideally there should be an array to temporary store values for a maximum of 32 players.

How could you code things such that only one or a couple of warnings are displayed ? Pseudo code would do if you know of a way.

I'm not sure what your asking for here? Explain and I'll do my best.

This is an easy fix and I'm sure Kev will fix it. Kev (the maker of antitweak) plays in the competitive CTF community (prounreal), therefor we don't use redeemers and he probably forgot to think about maps that might have extra big redeemers in them.

In the original release a couple years ago, people got kicked on bollwerk because the mapmaker added a huge amp to the map, so it sets everybodys drawscale on the amp bigger than it normally is. He fixed it by auto setting all the powerup scales to 1 on the loading of antitweak, so he should just have to add the deemer to that list of things to reset to 1 drawscale. I'll let him know.

Unless Kev is hell bent on catching and broadcasting tweakers he could get rid of those pesky "Foreach" statements.

Example to default pickup items serverside.


const DrawScale = 1.0

function bool HandlePickupQuery(Pawn Other, Inventory Item, out byte bAllowPickup)
{
local private string InvItem;

InvItem = caps(mid(string(Item.Class), instr(string(Item.Class), ".") + 1));

//This shouldn't ever happen but we don't want to crash with a FArray FMalloc::ReAlloc error.
if (InvItem == "")
{
if ( NextMutator != None )
return NextMutator.HandlePickupQuery(Other, item, bAllowPickup);
return false;
}

switch (InvItem)
{
case "WARHEADLAUNCHER":
Item.DrawScale = DrawScale;
break;

case "UT_JUMPBOOTS":
Item.DrawScale = DrawScale;
Item.Mesh = LodMesh'jboot';
break;

//And so on ...........
}

if ( NextMutator != None )
return NextMutator.HandlePickupQuery(Other, item, bAllowPickup);
return false;
}

Azura
25th May, 2007, 03:57 AM
I'm not sure what your asking for here? Explain and I'll do my best.

Ok. I haven't tested this version of AntiTweak but I'm pretty sure it behaves like older versions (unless I'm confusing this with another antitweaks mod).

When someone enters a server with an illegal tweak enabled, the mod will repeat a warning message indefinitely. This is probably because there's a simple if check somewhere in a tick. The same would be happening with log entries.

What I'd be interested in is a simple check that triggers only one warning or a fixed number of warnings. Again, I haven't tested this mod but I'd like to know of a clever way to do this for stuff I'm doing. Perhaps have a bool or a counter to keep a trace of whether a player is found with a tweak enabled or not.

dodgeball
25th May, 2007, 07:02 AM
I'm not sure what your asking for here? Explain and I'll do my best.



Unless Kev is hell bent on catching and broadcasting tweakers he could get rid of those pesky "Foreach" statements.

Example to default pickup items serverside.


const DrawScale = 1.0

function bool HandlePickupQuery(Pawn Other, Inventory Item, out byte bAllowPickup)
{
local private string InvItem;

InvItem = caps(mid(string(Item.Class), instr(string(Item.Class), ".") + 1));

//This shouldn't ever happen but we don't want to crash with a FArray FMalloc::ReAlloc error.
if (InvItem == "")
{
if ( NextMutator != None )
return NextMutator.HandlePickupQuery(Other, item, bAllowPickup);
return false;
}

switch (InvItem)
{
case "WARHEADLAUNCHER":
Item.DrawScale = DrawScale;
break;

case "UT_JUMPBOOTS":
Item.DrawScale = DrawScale;
Item.Mesh = LodMesh'jboot';
break;

//And so on ...........
}

if ( NextMutator != None )
return NextMutator.HandlePickupQuery(Other, item, bAllowPickup);
return false;
}


He could use ONE foreach loop aswell if he really needs to scan all these objects. Just loop with Class'Actor' and cast the classes you need to that. (As they are all derived from Actor) This will safe you from having very inefficient code being run over and over again.

chicken-
25th May, 2007, 07:10 AM
Ok here is the official word from Kev.

He has his reasons for scanning things every 5 seconds, there are more ways of manipulating drawscales than you think.

However,
[kev] tell them this: i will make an antitweak tomorrow that works with their deemers

:)

chicken-
25th May, 2007, 04:21 PM
Ok here is the official word from Kev.

He has his reasons for scanning things every 5 seconds, there are more ways of manipulating drawscales than you think.

However,
[kev] tell them this: i will make an antitweak tomorrow that works with their deemers

:)

A|ice
28th May, 2007, 07:05 PM
Ok here is the official word from Kev.

He has his reasons for scanning things every 5 seconds, there are more ways of manipulating drawscales than you think.

However,
[kev] tell them this: i will make an antitweak tomorrow that works with their deemers

:)

Did he ever get around to that fix?

A|ice

dodgeball
30th May, 2007, 05:00 PM
Ok here is the official word from Kev.

He has his reasons for scanning things every 5 seconds, there are more ways of manipulating drawscales than you think.

However,
[kev] tell them this: i will make an antitweak tomorrow that works with their deemers

:)

Trust me, I know a fair bit about programming in UScript. Making it check every 5 seconds aint a bad thing, but why loop through all the actors in the GObjObjects list (TArray<class UObject*> GObjObjects in UObject native class) when you can do the following as well:


Foreach AllActors(Class'Actor', A)
{
if (A != None)
{
if (WarheadLauncher(A) != None)
{
SomeValue = WarHeadLauncher(A).SomeValue;
}
}
}


And just cast the class you want to the actor (all classes returned from AllActors are actor based, so you dont have to try classes deriving from object.)

By the way, his checks are very easy to bypass. Change one byte in the Timer function you make the mutator stop checking for cheats already. (74 to 73 i believe)

SesioN
30th May, 2007, 10:04 PM
Trust me, I know a fair bit about programming in UScript. Making it check every 5 seconds aint a bad thing, but why loop through all the actors in the GObjObjects list (TArray<class UObject*> GObjObjects in UObject native class) when you can do the following as well:


Foreach AllActors(Class'Actor', A)
{
if (A != None)
{
if (WarheadLauncher(A) != None)
{
SomeValue = WarHeadLauncher(A).SomeValue;
}
}
}


And just cast the class you want to the actor (all classes returned from AllActors are actor based, so you dont have to try classes deriving from object.)

By the way, his checks are very easy to bypass. Change one byte in the Timer function you make the mutator stop checking for cheats already. (74 to 73 i believe)

Change one byte, and UTDC will kick your for illegal files. (if you added it up to UTDC ofc)

dodgeball
31st May, 2007, 05:44 PM
Change one byte, and UTDC will kick your for illegal files. (if you added it up to UTDC ofc)

True, but most admins don't add the file to UTDC. And tbh, edit a few bytes in UTDC and it won't do anything either :P

Just_Me
2nd June, 2007, 06:18 AM
Trust me, I know a fair bit about programming in UScript. Making it check every 5 seconds aint a bad thing, but why loop through all the actors in the GObjObjects list (TArray<class UObject*> GObjObjects in UObject native class) when you can do the following as well:


Foreach AllActors(Class'Actor', A)
{
if (A != None)
{
if (WarheadLauncher(A) != None)
{
SomeValue = WarHeadLauncher(A).SomeValue;
}
}
}


And just cast the class you want to the actor (all classes returned from AllActors are actor based, so you dont have to try classes deriving from object.)

By the way, his checks are very easy to bypass. Change one byte in the Timer function you make the mutator stop checking for cheats already. (74 to 73 i believe)

That would be considerably worse then the method he is currently using for iteration. You can't possilby be suggesting to iterate the whole actor list to grab a specific base actor. Example for Face on startup for class'WarheadLauncer', current method: 2 iterations, your suggestion 574 iterations.

A|ice
7th July, 2007, 03:57 AM
Did Kev ever get around to a fix for this?

A|ice

SkullSeeker
10th September, 2007, 09:37 AM
Did Kev ever get around to a fix for this?

A|ice

I am getting kick too, from my server, was woundering what to do to fix it,
I am not a programmer !!! Sorry, Big Deemer Tweak, how can i stop this from kicking me off my server?

SkullSeeker
10th September, 2007, 09:40 AM
I have tried everything i can think of, now i am asking if someone worked it out, and how?

A|ice
11th September, 2007, 05:22 AM
Turn off the AntiTweak I guess...:confused:

TheWatcher
11th September, 2007, 07:21 AM
What mod do you use on your server?

SkullSeeker
12th September, 2007, 01:45 AM
chaso mod ut 99 goty edition, but i played today and it seems they have fixed it on thier end , It's part of the <lol>clan,
<lol>SkullSeeker.... thanks for yer help, come visit us. www.thelolclan.com

admin
9th July, 2008, 11:45 AM
new link ok http://kevin.voidness.net/AntiTweakV42.zip

admin
6th August, 2008, 07:15 PM
Server Name: [PURE] zp| Sniper-Ring**TDM&CTF**community
*** AntiTweak Alert *** :
**** was kicked for: No Smoke Tweak - ((Details: Server's=2.000000 , Player's=0.000000) (IP Address: **.**.**.**)


Cheat TO or real cheat for UT ?

[DANISH]TheDane
6th August, 2008, 08:53 PM
that's the thing about tweaks ... cheat or not? ... it's actualy up to you to decide as you are the server admin.

Letylove49
1st September, 2008, 03:31 PM
Altered Powerup Mesh Tweak (Details: Server's=UnrealShare.StingerPickup , Player's=Botpack.WHPick)

this issue was on Floridiasharkattak with special weapons. http://shado49.clanservers.com/Download/Maps/CTF-FloridaSharkAttack-fix.zip