RedProtect will be a new feature for my server RedMS. Yes I am Mikey the original RMS owner(Youtube up RedMS, if you don't know).
Features:
Packet editing detection(Detects all winsock & MapleStory hooks)
Memory editing(VirtualQueryEx(); is my hero!)
Dll injection(:3 I'll keep this a secret)
Hook detection(Detects hooks)
Everything is controlled by the server, the whole module is virtualized and heavily encrypted. The server will send random heartbeats at random time, and will require a heartbeat response back to continue to play the server.
Everything is done... I just need to include timestamps on packets. Be sure to keep an eye on this thread :)
This is the response handler I've coded... I'm keeping the clientside response as a secret.
Code:package net.sf.odinms.client.anticheat;
import java.util.Arrays;
import net.sf.odinms.client.MapleClient;
import net.sf.odinms.net.AbstractMaplePacketHandler;
import net.sf.odinms.server.maps.MapleMapObjectType;
import net.sf.odinms.tools.MaplePacketCreator;
import net.sf.odinms.tools.data.input.SeekableLittleEndianAccessor;
import net.sf.odinms.net.channel.*;
public class AntiHackHandler extends AbstractMaplePacketHandler{
@Override
/*
* [FC 00] [HackCode]
* HackCode = 1 Byte
*
* HackCodes: -
* 0x0 - Heartbeat
* 0x1 - Packet editor detected
* 0x2 - Memory edit detected
* 0x3 - Undefined dll injected
* 0x4 - Hook was rewrote
* 0x5 - Unspecified error
*/
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
byte hackCode = slea.readByte();
ChannelServer cserv = c.getChannelServer();
try{
switch(hackCode){
case 0x0:
if(!c.getPlayer().isChecked())
c.getPlayer().setChecked( true );
break;
case 0x1: //Packet Editor detected
c.getPlayer().ban("[RedProtect]Packet Editor", true);
cserv.getWorldInterface().broadcastMessage("[RedProtect]", MaplePacketCreator.serverNotice(9, c.getPlayer().getName() + "has been banned for trace of packet editing").getBytes());
c.getSession().close();
break;
case 0x2: //Memory edit detected
c.getPlayer().ban("[RedProtect]Memory editing", true);
cserv.getWorldInterface().broadcastMessage("[RedProtect]", MaplePacketCreator.serverNotice(9, c.getPlayer().getName() + "has been banned for trace of memory editing").getBytes());
c.getSession().close();
break;
case 0x3: //Undefined dll injected
//c.getPlayer().ban("[RedProtect]Dll injection", true);
//cserv.getWorldInterface().broadcastMessage("[RedProtect]", MaplePacketCreator.serverNotice(6, c.getPlayer().getName() + "has been banned for trace of a dll injected").getBytes());
c.getSession().close();
break;
case 0x4: //Hook was rewrote
c.getPlayer().ban("[RedProtect]Hook rewrote", true);
cserv.getWorldInterface().broadcastMessage("[RedProtect]", MaplePacketCreator.serverNotice(9, c.getPlayer().getName() + "has been banned for trace of rewriting a hook").getBytes());
c.getSession().close();
break;
case 0x5: //Unspecified error
c.getSession().close();
break;
default: //This should never be reached
c.getSession().close();
break;
}
} catch(Exception e){
}
}
}

