Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 19:48

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[REQUEST]Dll-Injector

Discussion on [REQUEST]Dll-Injector within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 60
Join Date: Jun 2009
Posts: 717
Received Thanks: 431
Exclamation [REQUEST]Dll-Injector

Hey wollte mal fragen, ob jmd nen noch nicht detecteten dll-injector kennt ?
->Bitte um schnelle Antwort !!


Vielen Dank Coladose
FrEakY. is offline  
Old 03/13/2010, 17:47   #2
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Dll Injectoren können detected werden?
Sehr interessant

Du meinst wahrscheinlich einen Hook oder eine Bypass DLL die über den injector ins Spiel injected werden kann oder
HardCore.1337 is offline  
Old 03/13/2010, 18:51   #3
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Hf.

Code:
/**********************************************************************
This file is part of the Navigator library.

Navigator is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

Navigator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Navigator.  If not, see <http://www.gnu.org/licenses/>.

Navigator is a little library for writing custom gamecheats etc
Copyright (C) <2009> <flo8464 ()>
**********************************************************************/

#ifndef __INJECTION_HPP__
#define __INJECTION_HPP__

//Definition Include
#include "ProcessDef.hpp"

namespace Navigator
{
	void Process::injectModuleAndCallExport(const std::wstring& dllPath, const std::wstring& exportName, LPVOID functionParam) const
	{
		//Write path into targets memory
		SafeRemoteMemory remotePathBuffer(allocateMemory((dllPath.length() + 1) * sizeof(wchar_t)), processHandle_);
		writeWideString(remotePathBuffer, dllPath);

		//Load kernel32.dll to get LoadLibraryW address 
		SafeModule kernel32(LoadLibraryW(L"kernel32.dll"));
		if(!kernel32)
			throw WinException("Process::injectModuleAndCallExport()", "LoadLibraryW()", GetLastError());

		//Get LoadLibraryW address
		DWORD_PTR addressLoadLibaryW = reinterpret_cast<DWORD_PTR>(customGetProcAddress(kernel32, "LoadLibraryW"));
		if (!addressLoadLibaryW)
			throw std::runtime_error("Process::injectModuleAndCallExport Error : customGetProcAddress() failed");

		//Create remote Thread and wait until its finished
		SafeHandle remoteThread(createThread(addressLoadLibaryW, remotePathBuffer, false, INFINITE));

		//Get remote threads exit code
		DWORD threadExitCode = 0;
		if (!GetExitCodeThread(remoteThread, &threadExitCode))
			throw WinException("Process::injectModuleAndCallExport()", "GetExitCodeThread()", GetLastError());

		//Its zero, LoadLibraryW failed
		if(!threadExitCode)
			throw std::runtime_error("Process::injectLibraryAndCallExport Error : LoadLibraryW() in remote process failed");

		//Call the export, if wanted
		if(!exportName.empty() && exportName != L" ")
			callExport(dllPath, exportName, functionParam);
	}

	void Process::ejectModule(const std::wstring& module, bool isPath) const
	{
		//Load kernel32.dll to get FreeLibrary's address 
		SafeModule kernel32(LoadLibraryW(L"kernel32.dll"));
		if(!kernel32)
			throw WinException("Process::ejectModule()", "LoadLibraryW()", GetLastError());

		//Get FreeLibrary address
		DWORD_PTR addressEjectLibrary = reinterpret_cast<DWORD_PTR>(customGetProcAddress(kernel32, "FreeLibrary"));
		if (!addressEjectLibrary)
			throw std::runtime_error("Process::ejectModule() Error : customGetProcAddress() failed");

		DWORD_PTR moduleBase = getModuleBaseByName(module, isPath);

		//Create remote Thread and wait until its finished
		SafeHandle remoteThread(createThread(addressEjectLibrary, reinterpret_cast<LPVOID>(moduleBase), false, INFINITE));

		//Get remote threads exit code
		DWORD threadExitCode = 0;
		if (!GetExitCodeThread(remoteThread, &threadExitCode))
			throw WinException("Process::ejectModule()", "GetExitCodeThread()", GetLastError());

		//Its zero, FreeLibrary failed
		if(!threadExitCode)
			throw std::runtime_error("Process::ejectModule() Error : FreeLibrary() in remote process failed");
	}

	/Written by Cypher, credit him
	FARPROC Process::customGetProcAddress(HMODULE module, const std::string& functionName) const
	{
		PIMAGE_DOS_HEADER pDosHeader = reinterpret_cast<PIMAGE_DOS_HEADER>(module);
		if(!pDosHeader || pDosHeader->e_magic != IMAGE_DOS_SIGNATURE)
			throw std::runtime_error("Process::customGetProcAddress Error : DOS PE header is invalid.");

		PIMAGE_NT_HEADERS pNtHeader = reinterpret_cast<PIMAGE_NT_HEADERS>(reinterpret_cast<PCHAR>(module) + pDosHeader->e_lfanew);
		if(pNtHeader->Signature != IMAGE_NT_SIGNATURE)
			throw std::runtime_error("Process::customGetProcAddress Error :  NT PE header is invalid.");

		PVOID pExportDirTemp				= reinterpret_cast<PBYTE>(module) + pNtHeader->OptionalHeader.DataDirectory

[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
		PIMAGE_EXPORT_DIRECTORY pExportDir	= reinterpret_cast<PIMAGE_EXPORT_DIRECTORY>(pExportDirTemp);
		if(pExportDir->AddressOfNames == NULL)
			throw std::runtime_error("Process::customGetProcAddress Error : Symbol names missing entirely.");

		PDWORD pNamesRvas			= reinterpret_cast<PDWORD>(reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfNames);
		PWORD pNameOrdinals			= reinterpret_cast<PWORD>(reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfNameOrdinals);
		PDWORD pFunctionAddresses	= reinterpret_cast<PDWORD>( reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfFunctions);

		for (DWORD n = 0; n < pExportDir->NumberOfNames; n++) 
		{
			PSTR CurrentName = reinterpret_cast<PSTR>(reinterpret_cast<PBYTE>(module) + pNamesRvas[n]);	  
			if(functionName == CurrentName)
			{
				WORD Ordinal = pNameOrdinals[n];
				return reinterpret_cast<FARPROC>(reinterpret_cast<PBYTE>(module) + pFunctionAddresses[Ordinal]);
			}
		}

		return 0;
	}

	DWORD Process::callExport(const std::wstring& moduleName, const std::wstring& exportName, LPVOID functionParam) const
	{
		//Get the modules baseaddress
		DWORD_PTR moduleBase = getModuleBaseByName(moduleName, true);
		if(!moduleBase)
			throw std::runtime_error("Process::callExport Error : Module not found");

		//Load module as data so we can read the EAT locally
		SafeModule module(LoadLibraryExW(moduleName.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES));
		if(!module)
			throw WinException("Process::callExport()", "LoadLibraryExW()", GetLastError());

		//Get module pointer
		DWORD_PTR modulePointer = reinterpret_cast<DWORD_PTR>(module.get());

		//Find export
		std::string exportNameA(exportName.begin(), exportName.end());
		DWORD_PTR exportAddress = reinterpret_cast<DWORD_PTR>(GetProcAddress(module, exportNameA.c_str()));
		if (!exportAddress)
			throw WinException("Process::callExport()", "GetProcAddress()", GetLastError());

		//If image is relocated we need to recalculate the address
		if(modulePointer != moduleBase)
			exportAddress = moduleBase + (exportAddress - modulePointer);

		//Call the remote thread and wait until it terminates
		SafeHandle remoteThread(createThread(exportAddress, functionParam, false, INFINITE));

		//Get thread exit code
		DWORD exitCode = 0;
		if (!GetExitCodeThread(remoteThread, &exitCode))
			throw WinException("Process::callExport()", "GetExitCodeThread()", GetLastError());

		return exitCode;
	}
}

#endif //__INJECTION_HPP__
flo8464 is offline  
Old 03/13/2010, 18:54   #4
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
wäre besser wenn du ihm die Exe gibts.
Er wird mit dem Code nichts anfangen können
HardCore.1337 is offline  
Old 03/13/2010, 20:00   #5
 
elite*gold: 0
Join Date: Oct 2009
Posts: 33
Received Thanks: 3
@General Desert
Jaa DLL können detected werden bei Spielen wie z.B Crossfire oder S4(was wahrscheinlich er spielt ) , bei diesen Spielen gibt es eine zusätzliche Sicherheitssoftware(XTRAP) die das spiel Stoppt wenn man dll injected hat // Ich brauchs zufällig auch für Crossfire wäre gut wenn flo8464 mehr infos dazu geben könnte
€dit
GOOGLE SAGT :


Versuchs mal mit den , da steht zwar DETECTED aber ich GLAUBE der geht noch
MFG albanianstar ♣
albanianstar is offline  
Old 03/13/2010, 22:07   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,903
Received Thanks: 25,407
Quote:
Originally Posted by albanianstar View Post
@General Desert
Jaa DLL können detected werden bei Spielen wie z.B Crossfire oder S4(was wahrscheinlich er spielt ) , bei diesen Spielen gibt es eine zusätzliche Sicherheitssoftware(XTRAP) die das spiel Stoppt wenn man dll injected hat // Ich brauchs zufällig auch für Crossfire wäre gut wenn flo8464 mehr infos dazu geben könnte
€dit
GOOGLE SAGT :


Versuchs mal mit den , da steht zwar DETECTED aber ich GLAUBE der geht noch
MFG albanianstar ♣
meine güte.
es geht hier aber um dll injector
Dll injector können nicht detected werden, da sie ja vorher gestartet werden.
nur die dll selbst!
deshalb regt es mich auch immer auf, wenn ich lese "perx is detected, den will ich nich!"
MrSm!th is offline  
Old 03/13/2010, 22:18   #7
 
elite*gold: 60
Join Date: Jun 2009
Posts: 717
Received Thanks: 431
Hey Sm!th, darum geht's mir nicht.. es geht darum, dass es doch noch nen anderen injector alsPerX geben sollte und wininject funzt bei mir nicht Xx


Quote:
Code:
/**********************************************************************
This file is part of the Navigator library.

Navigator is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
any later version.

Navigator is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Navigator.  If not, see <http://www.gnu.org/licenses/>.

Navigator is a little library for writing custom gamecheats etc
Copyright (C) <2009> <flo8464 ()>
**********************************************************************/

#ifndef __INJECTION_HPP__
#define __INJECTION_HPP__

//Definition Include
#include "ProcessDef.hpp"

namespace Navigator
{
	void Process::injectModuleAndCallExport(const std::wstring& dllPath, const std::wstring& exportName, LPVOID functionParam) const
	{
		//Write path into targets memory
		SafeRemoteMemory remotePathBuffer(allocateMemory((dllPath.length() + 1) * sizeof(wchar_t)), processHandle_);
		writeWideString(remotePathBuffer, dllPath);

		//Load kernel32.dll to get LoadLibraryW address 
		SafeModule kernel32(LoadLibraryW(L"kernel32.dll"));
		if(!kernel32)
			throw WinException("Process::injectModuleAndCallExport()", "LoadLibraryW()", GetLastError());

		//Get LoadLibraryW address
		DWORD_PTR addressLoadLibaryW = reinterpret_cast<DWORD_PTR>(customGetProcAddress(kernel32, "LoadLibraryW"));
		if (!addressLoadLibaryW)
			throw std::runtime_error("Process::injectModuleAndCallExport Error : customGetProcAddress() failed");

		//Create remote Thread and wait until its finished
		SafeHandle remoteThread(createThread(addressLoadLibaryW, remotePathBuffer, false, INFINITE));

		//Get remote threads exit code
		DWORD threadExitCode = 0;
		if (!GetExitCodeThread(remoteThread, &threadExitCode))
			throw WinException("Process::injectModuleAndCallExport()", "GetExitCodeThread()", GetLastError());

		//Its zero, LoadLibraryW failed
		if(!threadExitCode)
			throw std::runtime_error("Process::injectLibraryAndCallExport Error : LoadLibraryW() in remote process failed");

		//Call the export, if wanted
		if(!exportName.empty() && exportName != L" ")
			callExport(dllPath, exportName, functionParam);
	}

	void Process::ejectModule(const std::wstring& module, bool isPath) const
	{
		//Load kernel32.dll to get FreeLibrary's address 
		SafeModule kernel32(LoadLibraryW(L"kernel32.dll"));
		if(!kernel32)
			throw WinException("Process::ejectModule()", "LoadLibraryW()", GetLastError());

		//Get FreeLibrary address
		DWORD_PTR addressEjectLibrary = reinterpret_cast<DWORD_PTR>(customGetProcAddress(kernel32, "FreeLibrary"));
		if (!addressEjectLibrary)
			throw std::runtime_error("Process::ejectModule() Error : customGetProcAddress() failed");

		DWORD_PTR moduleBase = getModuleBaseByName(module, isPath);

		//Create remote Thread and wait until its finished
		SafeHandle remoteThread(createThread(addressEjectLibrary, reinterpret_cast<LPVOID>(moduleBase), false, INFINITE));

		//Get remote threads exit code
		DWORD threadExitCode = 0;
		if (!GetExitCodeThread(remoteThread, &threadExitCode))
			throw WinException("Process::ejectModule()", "GetExitCodeThread()", GetLastError());

		//Its zero, FreeLibrary failed
		if(!threadExitCode)
			throw std::runtime_error("Process::ejectModule() Error : FreeLibrary() in remote process failed");
	}

	/Written by Cypher, credit him
	FARPROC Process::customGetProcAddress(HMODULE module, const std::string& functionName) const
	{
		PIMAGE_DOS_HEADER pDosHeader = reinterpret_cast<PIMAGE_DOS_HEADER>(module);
		if(!pDosHeader || pDosHeader->e_magic != IMAGE_DOS_SIGNATURE)
			throw std::runtime_error("Process::customGetProcAddress Error : DOS PE header is invalid.");

		PIMAGE_NT_HEADERS pNtHeader = reinterpret_cast<PIMAGE_NT_HEADERS>(reinterpret_cast<PCHAR>(module) + pDosHeader->e_lfanew);
		if(pNtHeader->Signature != IMAGE_NT_SIGNATURE)
			throw std::runtime_error("Process::customGetProcAddress Error :  NT PE header is invalid.");

		PVOID pExportDirTemp				= reinterpret_cast<PBYTE>(module) + pNtHeader->OptionalHeader.DataDirectory

[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
		PIMAGE_EXPORT_DIRECTORY pExportDir	= reinterpret_cast<PIMAGE_EXPORT_DIRECTORY>(pExportDirTemp);
		if(pExportDir->AddressOfNames == NULL)
			throw std::runtime_error("Process::customGetProcAddress Error : Symbol names missing entirely.");

		PDWORD pNamesRvas			= reinterpret_cast<PDWORD>(reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfNames);
		PWORD pNameOrdinals			= reinterpret_cast<PWORD>(reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfNameOrdinals);
		PDWORD pFunctionAddresses	= reinterpret_cast<PDWORD>( reinterpret_cast<PBYTE>(module) + pExportDir->AddressOfFunctions);

		for (DWORD n = 0; n < pExportDir->NumberOfNames; n++) 
		{
			PSTR CurrentName = reinterpret_cast<PSTR>(reinterpret_cast<PBYTE>(module) + pNamesRvas[n]);	  
			if(functionName == CurrentName)
			{
				WORD Ordinal = pNameOrdinals[n];
				return reinterpret_cast<FARPROC>(reinterpret_cast<PBYTE>(module) + pFunctionAddresses[Ordinal]);
			}
		}

		return 0;
	}

	DWORD Process::callExport(const std::wstring& moduleName, const std::wstring& exportName, LPVOID functionParam) const
	{
		//Get the modules baseaddress
		DWORD_PTR moduleBase = getModuleBaseByName(moduleName, true);
		if(!moduleBase)
			throw std::runtime_error("Process::callExport Error : Module not found");

		//Load module as data so we can read the EAT locally
		SafeModule module(LoadLibraryExW(moduleName.c_str(), NULL, DONT_RESOLVE_DLL_REFERENCES));
		if(!module)
			throw WinException("Process::callExport()", "LoadLibraryExW()", GetLastError());

		//Get module pointer
		DWORD_PTR modulePointer = reinterpret_cast<DWORD_PTR>(module.get());

		//Find export
		std::string exportNameA(exportName.begin(), exportName.end());
		DWORD_PTR exportAddress = reinterpret_cast<DWORD_PTR>(GetProcAddress(module, exportNameA.c_str()));
		if (!exportAddress)
			throw WinException("Process::callExport()", "GetProcAddress()", GetLastError());

		//If image is relocated we need to recalculate the address
		if(modulePointer != moduleBase)
			exportAddress = moduleBase + (exportAddress - modulePointer);

		//Call the remote thread and wait until it terminates
		SafeHandle remoteThread(createThread(exportAddress, functionParam, false, INFINITE));

		//Get thread exit code
		DWORD exitCode = 0;
		if (!GetExitCodeThread(remoteThread, &exitCode))
			throw WinException("Process::callExport()", "GetExitCodeThread()", GetLastError());

		return exitCode;
	}
}

#endif //__INJECTION_HPP__
-> Ich hab kein VisualBasic (da es so weit ichs erkenne c++/c# ist...)

@Albanistar: Den hab ich schon und wenn man mit dme injectet wird man sofort wieder von gamesecurety gekickt ...
FrEakY. is offline  
Old 03/13/2010, 22:36   #8
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
probiere mal den von CE
HardCore.1337 is offline  
Old 03/13/2010, 22:38   #9
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
wenn man sowas liest
ich kann mich nur Mr Smith anschließen
Quote:
Den hab ich schon und wenn man mit dme injectet wird man sofort wieder von gamesecurety gekickt
nochmal zum mitlesen
es gibt keine UD oder Dt injectoren das ist einfach nur ein programm um die DLL in den prozess zu bringen
Ihr tut ja immer so als ob der injector ein rootkit ist das prozesshiding betreibt ^^

und nu denk doch lieber mal eine diese datei die sich DLL nennt vllt ist an der ja was faul
wenn es nicht geht dann wird es nicht gehen
da könnt ihr alle injectoren probieren die ihr findet wenn man durch sonstige anticheatprogramme gekickt/gebannt werdet wird es ganz sicher nicht am injector liegen


vllt solltet ihr euch lieber mal sowas anschauen bzw durchlesen

die erste zeile sagt doch schon alles
P-a-i-n is offline  
Old 03/13/2010, 22:41   #10
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Ihr habt alle recht, aber ich muss auch dazu sagen das die meisten Injectoren von OS abhängig sind.

Deswegen würde ich mal checken ob der Injector damit kompatibel ist.
Wenn ja, Dll checken ob alle Funktionen richtig gecallt werden
HardCore.1337 is offline  
Old 03/13/2010, 22:45   #11
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
nehme den OSH injector der ging bei mir bei XP 32 bit dann vista 64 bit und funzt jetzt bei win7 64 bit auch noch
meist ist nicht der injector schuld der muss ja einfach nur den prozesstreffen
P-a-i-n is offline  
Old 03/13/2010, 22:46   #12
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
wenn er richtig gut ist, ist es egal.
aber wenn er "schlampig" programmiert wurde (bestimme Kriterien die nur ein spezielles OS hat) gehts nicht.

Ich habe auch mal einen unter XP gemacht und unter Win7 geht er nicht mehr weil...(weiß ebend auch nicht warum)
HardCore.1337 is offline  
Old 03/14/2010, 12:05   #13
 
flo8464's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 161
Received Thanks: 38
Quote:
Originally Posted by General Desert View Post
wäre besser wenn du ihm die Exe gibts.
Er wird mit dem Code nichts anfangen können
Wenn er das in der Coder-Section schreibt, gehe ich davon aus, dass er es selbst machen möchte.

Mein Code lässt sich 1:1 in jeder Sprache umsetzen, die DLL importieren kann (WinAPI), dh. in praktisch jeder.
flo8464 is offline  
Old 03/14/2010, 13:57   #14
 
Lemuna's Avatar
 
elite*gold: 20
Join Date: Oct 2006
Posts: 855
Received Thanks: 112
Quote:
Originally Posted by coladose View Post


-> Ich hab kein VisualBasic (da es so weit ichs erkenne c++/c# ist...)
Ich überleg noch welche der Satzhälften jetzt grade der dümmere ist....
Der Injector wird nie erkannt nur die DLL selber, wäre ja auch sinnfrei o.O
Lemuna is offline  
Old 03/14/2010, 14:07   #15
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Richtig.
Visual Basic und C++/C# sind zwei ganz verschiedene Sprachen
HardCore.1337 is offline  
Reply


Similar Threads Similar Threads
[Request] Need a Good Injector
09/06/2010 - CrossFire - 5 Replies
OMFGZ injector worked for me for crossfire but when i installed a new windows it doesnt work anymore dont know why.... Faith injector and all crossfire injector have virus so is there a clean injector?
request use cheetah injector
05/24/2010 - Grand Chase Hacks, Bots, Cheats & Exploits - 1 Replies
use cheetah injector for using hacks cheetah injector useful for using a hack example remove all you see on screen except hack.dll get a hack.dll any hack.dll and use injector browse hack.dll on injector dont open your GC type on rigth on choose progress type grandchase.exe tick auto inject and play GC and happy hacking download cheetah injector here
REQUEST: X1NJCT INJECTOR
01/21/2010 - Soldier Front Philippines - 7 Replies
PLS POST LINK OR POST WHERE I CAN DOWNLOAD THE X1NJECT DLL INJCTOR.
[REQUEST]DLL Injector.
08/14/2009 - CO2 Private Server - 1 Replies
REQUEST #CLOSE , FOUND 1!



All times are GMT +1. The time now is 19:48.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.