new updated by madness fixing so only the client lags and nobody else
This commit is contained in:
		
							parent
							
								
									2e25e066ed
								
							
						
					
					
						commit
						1f6abdff6f
					
				@ -1,15 +0,0 @@
 | 
			
		||||
"Games"
 | 
			
		||||
{
 | 
			
		||||
	"cstrike"
 | 
			
		||||
	{
 | 
			
		||||
		"Signatures"
 | 
			
		||||
		{
 | 
			
		||||
			"CGameClient::ExecuteStringCommand()"
 | 
			
		||||
			{
 | 
			
		||||
				"library"		"engine"
 | 
			
		||||
				"linux"			"@_ZN11CGameClient20ExecuteStringCommandEPKc"
 | 
			
		||||
				"windows"		"\x55\x89\xE5\x81\xEC\x48\x05\x00\x00"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										46
									
								
								rptcrashfix/gamedata/rptfixaddrs.css.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								rptcrashfix/gamedata/rptfixaddrs.css.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
"Games"
 | 
			
		||||
{
 | 
			
		||||
	"cstrike"
 | 
			
		||||
	{
 | 
			
		||||
		"Addresses"
 | 
			
		||||
		{
 | 
			
		||||
			"aRptServerEnabl_ptr"
 | 
			
		||||
			{
 | 
			
		||||
				"windows"
 | 
			
		||||
				{
 | 
			
		||||
					"signature" 	"aRptServerEnabl_ptr_"
 | 
			
		||||
				}
 | 
			
		||||
				"linux"
 | 
			
		||||
				{
 | 
			
		||||
					"signature" 	"aRptServerEnabl_ptr_"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			"aRptClientEnabl_ptr"
 | 
			
		||||
			{
 | 
			
		||||
				"windows"
 | 
			
		||||
				{
 | 
			
		||||
					"signature" 	"aRptClientEnabl_ptr_"
 | 
			
		||||
				}
 | 
			
		||||
				"linux"
 | 
			
		||||
				{
 | 
			
		||||
					"signature" 	"aRptClientEnabl_ptr_"
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		"Signatures"
 | 
			
		||||
		{
 | 
			
		||||
			"aRptServerEnabl_ptr_"
 | 
			
		||||
			{
 | 
			
		||||
				"library"		"engine"
 | 
			
		||||
				"windows"		"\x72\x70\x74\x5F\x73\x65\x72\x76\x65\x72"
 | 
			
		||||
				"linux"			"\x72\x70\x74\x5F\x73\x65\x72\x76\x65\x72"
 | 
			
		||||
			}
 | 
			
		||||
			"aRptClientEnabl_ptr_"
 | 
			
		||||
			{
 | 
			
		||||
				"library"		"engine"
 | 
			
		||||
				"windows"		"\x72\x70\x74\x5F\x63\x6C\x69\x65\x6E\x74"
 | 
			
		||||
				"linux"			"\x72\x70\x74\x5F\x63\x6C\x69\x65\x6E\x74"
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@ -1,88 +0,0 @@
 | 
			
		||||
#pragma semicolon 1
 | 
			
		||||
 | 
			
		||||
#define PLUGIN_AUTHOR "null138"
 | 
			
		||||
#define PLUGIN_VERSION "1.00"
 | 
			
		||||
 | 
			
		||||
#include <sourcemod>
 | 
			
		||||
#include <sdktools>
 | 
			
		||||
#include <dhooks>
 | 
			
		||||
// linux
 | 
			
		||||
#define GetPlayerSlotOffs 3
 | 
			
		||||
#pragma newdecls required
 | 
			
		||||
Handle hExecuteStringCommand;
 | 
			
		||||
Handle hGetPlayerSlot;
 | 
			
		||||
 | 
			
		||||
public Plugin myinfo = 
 | 
			
		||||
{
 | 
			
		||||
	name = "RPT Exploit Fixer",
 | 
			
		||||
	author = PLUGIN_AUTHOR,
 | 
			
		||||
	description = "Fixes latest RPT server exploit",
 | 
			
		||||
	version = PLUGIN_VERSION,
 | 
			
		||||
	url = "https://steamcommunity.com/id/null138/"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
public void OnPluginStart()
 | 
			
		||||
{
 | 
			
		||||
	Handle conf = LoadGameConfigFile("rptexploitfix.css");
 | 
			
		||||
	if (conf == INVALID_HANDLE)
 | 
			
		||||
		SetFailState("Failed to load gamedata rptexploitfix.css");
 | 
			
		||||
	
 | 
			
		||||
	hExecuteStringCommand = DHookCreateDetour(Address_Null, CallConv_THISCALL, ReturnType_Bool, ThisPointer_Address);
 | 
			
		||||
	if (!hExecuteStringCommand)
 | 
			
		||||
		SetFailState("Failed to setup detour for CGameClient::ExecuteStringCommand()");
 | 
			
		||||
	
 | 
			
		||||
	if (!DHookSetFromConf(hExecuteStringCommand, conf, SDKConf_Signature, "CGameClient::ExecuteStringCommand()"))
 | 
			
		||||
		SetFailState("Failed to load CGameClient::ExecuteStringCommand() signature from gamedata");
 | 
			
		||||
	
 | 
			
		||||
	DHookAddParam(hExecuteStringCommand, HookParamType_CharPtr);
 | 
			
		||||
	
 | 
			
		||||
	if (!DHookEnableDetour(hExecuteStringCommand, false, ExecuteStringCommand))
 | 
			
		||||
		SetFailState("Failed to detour CGameClient::ExecuteStringCommand()");
 | 
			
		||||
 | 
			
		||||
	// And a post hook.
 | 
			
		||||
	if (!DHookEnableDetour(hExecuteStringCommand, true, Detour_OnExecuteStringCommand_Post))
 | 
			
		||||
		SetFailState("Failed to detour ExecuteStringCommand post.");
 | 
			
		||||
 | 
			
		||||
	 // Setup quick hack to get the client index of the IClient this pointer in the detour callback.
 | 
			
		||||
	StartPrepSDKCall(SDKCall_Raw);
 | 
			
		||||
        PrepSDKCall_SetVirtual(GetPlayerSlotOffs);
 | 
			
		||||
        PrepSDKCall_SetReturnInfo(SDKType_PlainOldData, SDKPass_Plain);
 | 
			
		||||
        hGetPlayerSlot = EndPrepSDKCall();
 | 
			
		||||
	delete conf;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public MRESReturn Detour_OnExecuteStringCommand_Post(Address pThis, Handle hReturn, Handle hParams)
 | 
			
		||||
{
 | 
			
		||||
    int client = SDKCall(hGetPlayerSlot, pThis) + 1;
 | 
			
		||||
    char sBuffer[512];
 | 
			
		||||
    DHookGetParamString(hParams, 1, sBuffer, sizeof(sBuffer));
 | 
			
		||||
    if((sBuffer[0] == 'r' && sBuffer[1] == 'p' && sBuffer[2] == 't'))
 | 
			
		||||
        {
 | 
			
		||||
                if(IsClientInGame(client) && !IsClientSourceTV(client))
 | 
			
		||||
		{
 | 
			
		||||
			 LogMessage("client: %N wanted command pre: %s", client, sBuffer);
 | 
			
		||||
			 KickClient(client, "DO NOT USE EXPLOITS ON THIS SERVER"); 
 | 
			
		||||
		}
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
}  
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public MRESReturn ExecuteStringCommand(Address addrThis, Handle hReturn, Handle hParams) 
 | 
			
		||||
{
 | 
			
		||||
	int client = SDKCall(hGetPlayerSlot, addrThis) + 1;
 | 
			
		||||
	
 | 
			
		||||
	char cmd[512];
 | 
			
		||||
	DHookGetParamString(hParams, 1, cmd, 512);
 | 
			
		||||
	// "rpt", "rpt_"
 | 
			
		||||
	if((cmd[0] == 'r' && cmd[1] == 'p' && cmd[2] == 't'))
 | 
			
		||||
	{
 | 
			
		||||
		if(IsClientInGame(client) && !IsClientSourceTV(client)) 
 | 
			
		||||
		{
 | 
			
		||||
			LogMessage("client: %N wanted command pre: %s", client, cmd);
 | 
			
		||||
			KickClient(client, "DO NOT USE EXPLOITS ON THIS SERVER");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return MRES_Ignored;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										27
									
								
								rptcrashfix/scripting/rptexploitfix3.sp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								rptcrashfix/scripting/rptexploitfix3.sp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,27 @@
 | 
			
		||||
#pragma semicolon 1
 | 
			
		||||
 | 
			
		||||
#define PLUGIN_AUTHOR "null138"
 | 
			
		||||
#define PLUGIN_VERSION "3.00"
 | 
			
		||||
 | 
			
		||||
#include <sourcemod>
 | 
			
		||||
 | 
			
		||||
#pragma newdecls required
 | 
			
		||||
 | 
			
		||||
public Plugin myinfo = 
 | 
			
		||||
{
 | 
			
		||||
	name = "RPT Exploit Fixer",
 | 
			
		||||
	author = PLUGIN_AUTHOR,
 | 
			
		||||
	description = "Fixes latest RPT server exploit on linux",
 | 
			
		||||
	version = PLUGIN_VERSION,
 | 
			
		||||
	url = "https://steamcommunity.com/id/null138/"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
public void OnPluginStart()
 | 
			
		||||
{
 | 
			
		||||
	Address aRptServerEnabl = GameConfGetAddress(LoadGameConfigFile("rptfixaddrs.css"), "aRptServerEnabl_ptr");
 | 
			
		||||
	Address aRptClientEnabl = GameConfGetAddress(LoadGameConfigFile("rptfixaddrs.css"), "aRptClientEnabl_ptr");
 | 
			
		||||
	if (aRptServerEnabl)
 | 
			
		||||
		StoreToAddress(aRptServerEnabl, 0x0, NumberType_Int8);
 | 
			
		||||
	if (aRptClientEnabl)
 | 
			
		||||
		StoreToAddress(aRptClientEnabl, 0x0, NumberType_Int8);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user