Speedhack source code, bitteschön

08/14/2008 15:05 LuckyLuke#1
Hi Leute, habe mich etwas über speedhacks ekrundigt und habe festgestellt, das alle ähnlich aufgebaut sind, bzw gleich! das heisst wenn man den ort(anwendung) in den der speedhack geladen wird ändert funktioniert er auch dort. man könnte also browser / games / windows beschleunigen, weil ja der datenfluss beschleunigt wird und das überall so läuft.

Ich stelle euch den code hier ein, vielleicht hat irgendwer lust was draus zu machen.

meine Idee:
- Interface adden
- Loader verändern können
- Geschwindigkeiten einstellen
- evtl versteckcode, also damit man in den prozessen usw nix sieht.

= perfekter speedhack für alle games etc.

Ich hoffe, das war ne Anregung, also hier ist der noch unfertige code. Stellt mir keine Fragen, ich bin kein Programmierer, ich weiss nur wie es ungefähr funktioniert!

Quote:
typedef bool (WINAPI *QueryPerformanceCounterFunc)(LARGE_INTEGER*);
/* Output stuff */

DWORD StartTime;
char *ShortShowString=new char;
bool gotStartTime=false;
bool show5sec=false;

/* type defs */

typedef bool(__stdcall *func_wglSwapBuffers)(HDC);
typedef bool(__stdcall *func_QueryPerformanceCounter)(LARGE_INTEGER*);

/* funcs */

static func_QueryPerformanceCounter QueryPerformanceCounterPtr=NULL;

DWORD last_real=0;
DWORD last_fake=0;
DWORD StartTimeS;
bool speedblock=false;
bool tmp=false;
float speed;
int speedon=1000;
int speedoff=5000;
int TIMOUT=400;
bool speedhack=true;


bool __stdcall NEWQueryPerformanceCounter(LARGE_INTEGER *lp)
{
bool ret = QueryPerformanceCounterPtr(lp);

if(speedhack)
{
DWORD cur_ticks = timeGetTime();
DWORD new_real = lp->LowPart;

if(!last_real)
{
last_real = last_fake = new_real;
return ret;
}

double factor = (speed<1 ? 1:speed);
if(speedon==0 || speedblock) { factor = 1.0; }

DWORD diff_real = (DWORD)(new_real-last_real);
DWORD diff_fake = (DWORD)(factor * double(diff_real));
lp->LowPart = last_fake + diff_fake;

last_fake += diff_fake;
last_real += diff_real;
}

return ret;
}

// speedblock code (so you won't get lagged by server) - glEnable

if(show5sec)
{
glText(Xcoord,500,ShortShowString,0.4f,1.0f,0.4f);
if(!gotStartTime)
{
StartTime = timeGetTime();
gotStartTime=true;
}
if(int(timeGetTime() - StartTime) > 5000)
{
// 5 seconds passed
show5sec = false;
gotStartTime = false;
StartTime=0;
}
}

if(speedhack && speedon != 0)
{

if(!tmp)
{
StartTimeS = timeGetTime();
tmp=true;
}
if((int(timeGetTime() - StartTimeS) > TIMOUT/speed) && !speedblock) // How long time is allowed ( 200 ms)
{
speedblock=true;
}
if((int(timeGetTime() - StartTimeS) > (TIMOUT/speed)*2) && speedblock) // Speed-Pause ( 800 ms)
{
speedblock=false;
tmp=false;
}
}

// glViewport - key (mouse1 / left mouse button speed)
if((GetAsyncKeyState(VK_LBUTTON)& 0x8000) && speedhack)
{
speedon=400;
speedoff=0;
}
else
{
speedon=0;
}
08/14/2008 18:11 Atheuz#2
Quote:
Originally Posted by LuckyLuke View Post
Hi Leute, habe mich etwas über speedhacks ekrundigt und habe festgestellt, das alle ähnlich aufgebaut sind, bzw gleich! das heisst wenn man den ort(anwendung) in den der speedhack geladen wird ändert funktioniert er auch dort. man könnte also browser / games / windows beschleunigen, weil ja der datenfluss beschleunigt wird und das überall so läuft.

Ich stelle euch den code hier ein, vielleicht hat irgendwer lust was draus zu machen.

meine Idee:
- Interface adden
- Loader verändern können
- Geschwindigkeiten einstellen
- evtl versteckcode, also damit man in den prozessen usw nix sieht.

= perfekter speedhack für alle games etc.

Ich hoffe, das war ne Anregung, also hier ist der noch unfertige code. Stellt mir keine Fragen, ich bin kein Programmierer, ich weiss nur wie es ungefähr funktioniert!
Man kann die Datenübertragung nicht schneller machen mit einen Queryperformancecounter hook, lololol das Internet schneller machen :D. Bei Browsergames geht das auch nicht weil so ziemlich alles vom Server vorberrechnet wird und man nur einen HTML output bekommt.
Und es gibt doch schon massig Speedhacks, z.B CheatEngine.
Außerdem ist der meiste code davon für/von CS.

Code:
#include <windows.h>
#include <detours.h>
typedef BOOL (APIENTRY *FUNC_QUERYPERFORMANCECOUNTER) (LARGE_INTEGER *);

float timerMultiplier = 2.0;
bool speedhack_toggle = true;

FUNC_QUERYPERFORMANCECOUNTER Real_QueryPerformanceCounter = NULL;
BOOL APIENTRY Hook_QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
{
  if( speedhack_toggle )
  {
    bool status = Real_QueryPerformanceCounter(lpPerformanceCount);
    lpPerformanceCount = lpPerformanceCount * timerMultiplier;
    return status;
  }
  else
    return Real_QueryPerformanceCounter(lpPerformanceCount);
}




BOOL APIENTRY DllMain(HANDLE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   switch (ul_reason_for_call) {
   case DLL_PROCESS_ATTACH: {
      DisableThreadLibraryCalls((HMODULE)hModule);

      Real_QueryPerformanceCounter = (FUNC_QUERYPERFORMANCECOUNTER) DetourFunction((PBYTE)DetourFindFunction("kernel32.dll", "QueryPerformanceCounter"),(PBYTE)My_QueryPerformanceCounter);
      } break;
   case DLL_PROCESS_DETACH:
      DetourRemove((PBYTE)Real_QueryPerformanceCounter, (PBYTE)My_QueryPerformanceCounter);
      break;
   default:
      break;
   }
    return TRUE;
08/14/2008 23:30 LuckyLuke#3
steht doch schon drin: bin kein programmierer = kein coder = nix ahnung.

die teile sind halt detected. und einer mit hide wäre ne feine sache.
07/19/2009 01:55 darylllamado#4
typedef bool (WINAPI *QueryPerformanceCounterFunc)(LARGE_INTEGER*);
/* Output stuff */

DWORD StartTime;
char *ShortShowString=new char;
bool gotStartTime=false;
bool show5sec=false;

/* type defs */

typedef bool(__stdcall *func_wglSwapBuffers)(HDC);
typedef bool(__stdcall *func_QueryPerformanceCounter)(LARGE_INTEGER*);

/* funcs */

static func_QueryPerformanceCounter QueryPerformanceCounterPtr=NULL;

DWORD last_real=0;
DWORD last_fake=0;
DWORD StartTimeS;
bool speedblock=false;
bool tmp=false;
float speed;
int speedon=1000;
int speedoff=5000;
int TIMOUT=400;
bool speedhack=true;


bool __stdcall NEWQueryPerformanceCounter(LARGE_INTEGER *lp)
{
bool ret = QueryPerformanceCounterPtr(lp);

if(speedhack)
{
DWORD cur_ticks = timeGetTime();
DWORD new_real = lp->LowPart;

if(!last_real)
{
last_real = last_fake = new_real;
return ret;
}

double factor = (speed<1 ? 1:speed);
if(speedon==0 || speedblock) { factor = 1.0; }

DWORD diff_real = (DWORD)(new_real-last_real);
DWORD diff_fake = (DWORD)(factor * double(diff_real));
lp->LowPart = last_fake + diff_fake;

last_fake += diff_fake;
last_real += diff_real;
}

return ret;
}

// speedblock code (so you won't get lagged by server) - glEnable

if(show5sec)
{
glText(Xcoord,500,ShortShowString,0.4f,1.0f,0.4f);
if(!gotStartTime)
{
StartTime = timeGetTime();
gotStartTime=true;
}
if(int(timeGetTime() - StartTime) > 5000)
{
// 5 seconds passed
show5sec = false;
gotStartTime = false;
StartTime=0;
}
}

if(speedhack && speedon != 0)
{

if(!tmp)
{
StartTimeS = timeGetTime();
tmp=true;
}
if((int(timeGetTime() - StartTimeS) > TIMOUT/speed) && !speedblock) // How long time is allowed ( 200 ms)
{
speedblock=true;
}
if((int(timeGetTime() - StartTimeS) > (TIMOUT/speed)*2) && speedblock) // Speed-Pause ( 800 ms)
{
speedblock=false;
tmp=false;
}
}

// glViewport - key (mouse1 / left mouse button speed)
if((GetAsyncKeyState(VK_LBUTTON)& 0x8000) && speedhack)
{
speedon=400;
speedoff=0;
}
else
{
speedon=0;
}
07/19/2009 02:32 schlurmann#5
Quote:
Originally Posted by LuckyLuke View Post
steht doch schon drin: bin kein programmierer = kein coder = nix ahnung.

die teile sind halt detected. und einer mit hide wäre ne feine sache.
Das mit der Detection hängt mit der Art des Hookens zusammen und nicht mit dem Code an sich. Und "für alle Spiele" ist das schon gar nicht.

Bitte lasse es einfach denn du hast nun offensichtlich überhaupt keine Ahnung von nix.