Graal Forums  

Go Back   Graal Forums > Development Forums > NPC Scripting
FAQ Members List Calendar Today's Posts

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 03-06-2011, 02:54 AM
ffcmike ffcmike is offline
Banned
Join Date: Jul 2004
Location: London
Posts: 2,029
ffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond reputeffcmike has a reputation beyond repute
Send a message via AIM to ffcmike Send a message via MSN to ffcmike
Gani Cheat Security

Some server staff may or may not be aware of a particular exploit that the knowledge of which seems to have been spreading quite recently, all it involves is the modification of a servers gani within your offline folders to work as a type 2/movie gani, the effect this has it that the location the player is displayed is somehow synced with the true player x/y variable, even I didn't believe it when it was explained to me at first as it defies my understanding of how ganis work, I guess it does by some form of quirk.

The example that I am referring to was the modification of the grab gani, which would first move the player back and forth in all directions, then repeat this diagonally allowing the user to simply move once in their intended position.

As it happens this problem is fixed within the V6 client, but I've seen it done a couple of times throughout the last week so decided to try and prevent it by script, it turned out to be quite simple so I've turned it into a self-contained weapon script (as Classic has a pretty complex security system that I have this tied into) for general use:

PHP Code:
function onActionServerSide(temp.ani){
  
temp.message = "Player " @ player.account @ " was caught Gani modifying (" @ temp.ani @ ").";
  
sendtorc("/disconnect " @ player.account @ " " @ char(34) @ "Security has detected and logged a suspected Gani exploit from your client." @ char(34));
  
this.logHack(temp.message);
}

function 
logHack(temp.message){
  
sendtorc(temp.message);
  
savelog2("log_security.txt", temp.message);
}

//#CLIENTSIDE
function onCreated(){
  
//List of exceptions incase a server actually does use a movie gani on the player, otherwise remove
  
this.exceptions = {
    
"moviegani1",
    
"moviegani2",
  };
  
this.setTimer(1); //Doesn't necessarily have to be every second, also shouldn't be called immediately as logging back in could re-trigger it.
}

function 
onTimeout(){
  if(
player.ani.movie){
    
//Remove if no exceptions
    
if(this.exceptions.index(player.ani.name) == -1){
      
triggerserver("gui", this.name, player.ani.name);
      return;
    }
  }
  
this.setTimer(1);
} 
Ofcourse in the event of a server actually using a movie gani on the player that could mean modifying that gani would go un-detected, something like this however could have the added checks of player.x and y changing compared to the old value to atleast log the possibility.
Reply With Quote
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 10:58 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
Copyright (C) 1998-2019 Toonslab All Rights Reserved.