Skocz do zawartości
1 maja :: Święto Pracy / 2 maja :: Dzień Flagi / 3 maja :: Święto Konstytucji

[TUT] Jak napisać swojego "hacka"? - tutorial.


Nicolass
# CSH External VIP Project

Masz dosyć problemów z czynnikiem zaufania w CS2 lub notorycznymi banami?

Sprawdź CSH External VIP Project.


Więcej informacji  

Rekomendowane odpowiedzi

Ponieważ widzę ten dział pusty, napiszę tu coś.

Chyba wszyscy wiedzą co to jest wallhack, aimbot i inne rzeczy, tego nie trzeba tłumaczyć.

 

Stworzymy naszego własnego "hacka", który będzie miał menu, po przyciśnięciu przycisku "Insert".

 

Pierwsze co zrobimy, to pobieramy pGL_HackBase120 z zalacznika.

 

Po ściągnięciu tego na dysk, wypakowywujemy na pulpit. Otwieramy opengl.cpp i edytujemy!

Dajemy CTRL + F i szukamy struct basehookcvar_s. Gdy już znaleźliśmy, to edytujemy:

struct basehookcvar_s
{
float wallhack; // floaty, dzięki którym będziemy mogli robić funkcję naszego "hacka"
float whitewalls;
float wireframe;
float thirdperson;
float nosky;
float nightmode;
float menu;
};
basehookcvar_s cvar;
Teraz szukamy struct basehookmenu_s/ i edytujemy:

struct basehookmenu_s
{
char title[16]; // szkielet naszego menu
float* value;
float min;
float max;
float step;
};

int menuIndex = 0;
int menuItems = 11;
basehookmenu_s menu[11];
Teraz szukamy void InitMenu() i edytujemy:

void InitMenu()
{
strcpy( menu[0].title, "WallHack" ); // nazwa przycisku tego w menu
menu[0].value = &cvar.wallhack; // cvar (patrz wyżej)
menu[0].min = 0; // minimalna wartość
menu[0].max = 1; // maksymalna wartość
menu[0].step = 1; // tego chyba nie trzeba tłumaczyć 

strcpy( menu[1].title, "WhiteWall" );
menu[1].value = &cvar.whitewalls;
menu[1].min = 0;
menu[1].max = 1;
menu[1].step = 1;

strcpy( menu[2].title, "WireFrame" );
menu[2].value = &cvar.wireframe;
menu[2].min = 0;
menu[2].max = 3;
menu[2].step = 1;

strcpy( menu[3].title, "ThirdPerson" );
menu[3].value = &cvar.thirdperson;
menu[3].min = 0;
menu[3].max = 1;
menu[3].step = 1;

strcpy( menu[6].title, "NoSky");
menu[6].value = &cvar.nosky;
menu[6].min = 0;
menu[6].max = 1;
menu[6].step = 1;

strcpy( menu[7].title, "NightMode");
menu[7].value = &cvar.nightmode;
menu[7].min = 0;
menu[7].max = 1;
menu[7].step = 1;

}
Dobra, zrobiliśmy nasze menu, ale teraz trzeba je jakoś wyświetlić.. CTRL + F na HUD_Redraw i szukamy komentarza gdzie pisze // Menu.

// Menu

if(cvar.menu)
{
gEngfuncs.pfnClientCmd("unbind mouse1");
gEngfuncs.pfnClientCmd("unbind mwheelup");
gEngfuncs.pfnClientCmd("unbind mwheeldown");
}
if(!cvar.menu)
{
gEngfuncs.pfnClientCmd("bind mouse1 +attack");
gEngfuncs.pfnClientCmd("bind mwheelup invprev");
gEngfuncs.pfnClientCmd("bind mwheeldown invnext");
}
if( cvar.menu )
{
int x = 200;
int xx = 220;
int y = 100;
int yy = 200;
int yyy = 316;

InitMenu();

// Draw's Glowing Hud Text

DrawGlowHudString( x - 130, 84, 0, 0, 128, "sup3rh00k v1.0" );
for(int i=0;i<menuItems;i++)
{
if( i!=menuIndex )
{
DrawHudString( x - 130, 100 + (16*i), 255, 255, 255, menu[i].title );
DrawHudString( x - 60, 100 + (16*i), 255, 255, 255, "%2.2f", menu[i].value[0] );
}
else
{
static int b = 0;
static bool mode = 1;
if( mode )
b+=10;
else
b-=10;
if( b<0 )
{
b=0;mode=1;
}
if( b>255 )
{
b=255;mode=0;
}
DrawGlowHudString( x - 130, 100 + (16*i), 0, 0, b, menu[i].title );
DrawGlowHudString( x - 60, 100 + (16*i), 0, 0, b, "%2.2f", menu[i].value[0] );
}
}
}
}
Oto i nasze menu. Teraz szukamy HUD_Key_Event.

// Setup Hotkey for toggleing of Menu

if( keynum == 147 ) // Insert
{
if( eventcode == 1 )
cvar.menu=!cvar.menu;
}

if( cvar.menu && (eventcode==1) )
{
if( keynum == 128 )
{
if( menuIndex>0 ) menuIndex--;
}
if( keynum == 129 ) // dolna strzałka
{
if( menuIndex<menuItems-1 ) menuIndex++;
}
if( keynum == 130 ) // lewa strzałka
{
if( menu[menuIndex].value )
{
menu[menuIndex].value[0] -= menu[menuIndex].step;
if( menu[menuIndex].value[0] < menu[menuIndex].min )
menu[menuIndex].value[0] = menu[menuIndex].max;
}
}
if( keynum == 131 ) // prawa strzałka
{
if( menu[menuIndex].value )
{
menu[menuIndex].value[0] += menu[menuIndex].step;
if( menu[menuIndex].value[0] > menu[menuIndex].max )
menu[menuIndex].value[0] = menu[menuIndex].min;
}
}
if( keynum == 239 )
{
if( menuIndex<menuItems-1 ) menuIndex++;
}
if( keynum == 240 )
{
if( menuIndex>0 ) menuIndex--;
}
if( keynum == 241 )
{
if( eventcode )
{
menu[menuIndex].value[0] += menu[menuIndex].step;
if( menu[menuIndex].value[0] > menu[menuIndex].max )
menu[menuIndex].value[0] = menu[menuIndex].min;
}
}
if( keynum == 242 )
{
if( eventcode )
{
menu[menuIndex].value[0] -= menu[menuIndex].step;
if( menu[menuIndex].value[0] < menu[menuIndex].min )
menu[menuIndex].value[0] = menu[menuIndex].max;
}
}
}
}
Te wszystkie keynum == wartość, są to wirtualne kody klawiszy, np. enter to 13.

To co wyżej podałem, stanie się to wtedy gdy ten co pisze "hacka" czyli wy naciśnie.

 

Dobra, teraz funkcje. Szukamy glBegin i szukamy komenta // Wallhack.

//Wallhack

if(cvar.wallhack == 1)
{
if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS))
{
GLfloat curcol[4];
glGetFloatv(GL_CURRENT_COLOR, curcol);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
glColor4f(curcol[0],curcol[1],curcol[2],0.5f);
glClearColor(0.0f,0.0f,0.0f,0.0f);
}
}
Teraz druga rzecz jaką podałem w cvarach, są to białe ściany.

//Whitewalls

if(cvar.whitewalls == 1)
{
if(!(mode==GL_TRIANGLES||mode==GL_TRIANGLE_STRIP||mode==GL_TRIANGLE_FAN||mode==GL_QUADS))
{
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
}
}
Poszukajcie sobie CTRL + F //Whitewalls.

 

WireFrame:

//WireFrame
Skinny lines->1, Thich lines->3, Thickest->5..

if (cvar.wireframe==1) // moce 1
{
if (mode == GL_POLYGON)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(1.0);
glColor3f(255,255,255);
}
else
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
}

if (cvar.wireframe==2) // mode 2
{
if (mode == GL_POLYGON)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(3.0);
glColor3f(255,255,255);
}
else
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
}

if (cvar.wireframe==3) // mode 3
{
if (mode == GL_POLYGON)
{
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glLineWidth(5.0);
glColor3f(255,255,255);
}
else
{
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
}
Widok z trzeciej osoby:

//3rd Person

if(cvar.thirdperson)
{
gEngfuncs.pfnGetCvarPointer("chase_active")->value = 1;
gEngfuncs.pfnGetCvarPointer("r_drawviewmodel")->value = 0;
}

if(!cvar.thirdperson)
{
gEngfuncs.pfnGetCvarPointer("chase_active")->value = 0;
gEngfuncs.pfnGetCvarPointer("r_drawviewmodel")->value = 1;
}
Na początku, gdzie jest komentarz Bool for NoSky dodajemy:

bool bnosky = false;
Teraz dodajemy w glBegin:

 // NoSky

if (mode == GL_QUADS && cvar.nosky)
bnosky = true;
else
bnosky = false;
NightMode:

// Nightmode

if(cvar.nightmode)
{
if(mode != GL_TRIANGLES && mode != GL_TRIANGLE_STRIP && mode != GL_TRIANGLE_FAN && mode != GL_QUADS)
{
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);
}
}
I gotowe! Nie pisałem tego, tzn. tutorial tak, ale tych wszystkich funkcji to nie. Pozbierałem wszystko z tego forum i google w jedną kupe i macie. Działa wszystko na 100%. Nie musicie się martwić.

Oczywiście do tego można zrobić strzykawkę (wstrzykiwanie w proces, dll injection).

Kod źródłowy pokazujący dll injection, możecie pobrać:

http://www.cshacked.pl/loader-source-code-t22695/

 

Kompilacja: Ściągamy Microsoft Visual C++ Enterprise Edition i jazda

Jakby brakowało bibliotek (ja używam express edition -,-), można pobrać z innych kompilatorów, np. Dev-Cpp, MinGw.

[cshacked.pl] pGL_HackBase120.rar

Odnośnik do komentarza

Dodam jeszcze że pod jedną pozycją w menu można władować parę funkcji, np pod white walls zrobić różne kolory ścian, wystarczy zrobić coś takiego

if(cvar.whitewalls == 2)
jako osobna funkcja z kodem i jest gotowe ;P

 

+ dodać małą modyfikacje menu o tutaj:

menu[1].value = &cvar.whitewalls;  
menu[1].min = 0;  
menu[1].max = 1;  
menu[1].step = 1;
którą, nie będę mówić, sami ogarnijcie :)

"Stay hungry stay foolish" - Steve Jobs

Odnośnik do komentarza

Na Steam mysle, ze ten czit zadziala. Lecz na Nonsteamie to mam watpliwosci.. ale mozliwe, ze tez pojdzie. Jak nie bedzie dzialac na Nonsteamie to trzeba zeedytowac odpowiedno baze.

Pomogłem i chcesz podziękować? Zostaw up.png przy poście

CSHEx4.png

 

Szukasz taniego i bardzo dobrego cheata na legit? Wypróbuj CSH External VIP Project.

Odnośnik do komentarza

Trzeba zmienic stare offsety na Nonsteamowe albo dograc do bazy klasy automatycznych offsetow. Tutaj masz dla Steam jak i Nonsteam:

+ Code Autooffset-class // Steam & Non-Steam

Pomogłem i chcesz podziękować? Zostaw up.png przy poście

CSHEx4.png

 

Szukasz taniego i bardzo dobrego cheata na legit? Wypróbuj CSH External VIP Project.

Odnośnik do komentarza

Ta baza sama z siebie jest na non steama (stare offsety), żeby działała na steamie trzeba zmienić to:

cl_enginefuncs_s* pEngfuncs = (cl_enginefuncs_s*) 0x1eb52b8;

engine_studio_api_s* pEngstudio = (engine_studio_api_s*) 0x1ed1400;

playermove_s* pPmove = (playermove_s*) 0x2d5d9e0;

net_api_s* pNetapi = (net_api_s*) 0x1ecb4fc;

na nowe offsety, można je wyciągnąć poprzez ollydbg.

 

edit: nowe offsety:

Engine = 0x00166A98

ExportTable = 0x011FE320

Studio = 0x001829B8

Interface = 0x00182A7C

"Stay hungry stay foolish" - Steve Jobs

Odnośnik do komentarza

Ta baza sama z siebie jest na non steama (stare offsety), żeby działała na steamie trzeba zmienić to:

 

na nowe offsety, można je wyciągnąć poprzez ollydbg.

 

edit: nowe offsety:

po zmienieniu offsetów na nowe, aktualne, czit jest proof na vac2?

Btw. napisałeś, że aktualne offsety można wyciągnąć poprzez ollydbg, tylko z czego je wyciągnąć?

Odnośnik do komentarza

Jestem nowy w tych żeczach itd i mam pytanie bo w załączniku jest tak samo co ty  pokazujesz na zdjeciach i nadal nieczaje czy cos mam tam wpisać czy nie  a jeśli tak to co?.I czy ten folder wypakowany to trzeba gdzies wkleic czy otpalić przez coś .

Odnośnik do komentarza

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Regulamin. Polityka prywatności