Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[PORADNIK] Jak napisać hacka do Counter-Strike 1.6


Goździkowa

Rekomendowane odpowiedzi

Opublikowano

Jeżeli temat zamieściłem w złym miejscu to proszę moderatora/administratora o jego nie usuwanie tylko przeniesienie do właściwego działu na tym forum.

 

 

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

Opcje hacka:

 

-WallHack

-Wszystkie ściany mogą mieć jeden kolor (ułatwia gre z wallhack)

-Oraz jeszcze pare innych opisanych ponizej.

Pierwsze co zrobimy, to pobieramy pGL_HackBase120 z mojego chomika. -


http://chomikuj.pl/dominikxx8/Hack

 

Po ściągnięciu tego na dysk, wypakowywujemy na pulpit. Otwieramy opengl.cpp jakimkolwiek programem może być notatnik jednak najlepiej by był to Notepad ++ 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ć również z mojego chomika w folderze "Hack":


http://chomikuj.pl/dominikxx8/Hack

 

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.

Poprzez nienawiść zyskuję siłę;

Poprzez siłę zyskuje potęgę;

Poprzez potęgę osiągam zwycięstwo.

Opublikowano

najlepiej by był to

Notepad ++

 

i edytujemy!

 

 

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.

 

 

 

aha, czyli najpierw mają edytować to w notepadzie++ a potem ściągnąć IDE, w którym mogliby to robić dużo wygodniej...

 

szczerze. to nawet nie jest poradnik

nie wiadomo nawet do czego to służy. (nie jest to wprost napisane)

beznadziejnie opisane. Wręcz w ogóle

Już lepiej jakbyś wrzucił cały zlepiony kod, bo trudno się połapać w tym co napisałeś i nikt się z tego nic nie nauczy.

sam pewnie nie wiesz o co w tym kodzie chodzi.

Opublikowano

aha, czyli najpierw mają edytować to w notepadzie++ a potem ściągnąć IDE, w którym mogliby to robić dużo wygodniej...

 

szczerze. to nawet nie jest poradnik

nie wiadomo nawet do czego to służy. (nie jest to wprost napisane)

beznadziejnie opisane. Wręcz w ogóle

Już lepiej jakbyś wrzucił cały zlepiony kod, bo trudno się połapać w tym co napisałeś i nikt się z tego nic nie nauczy.

sam pewnie nie wiesz o co w tym kodzie chodzi.

 

Najwidoczniej twoja bystrość nie przekracza sprytu 2 letniego dziecka...

Poprzez nienawiść zyskuję siłę;

Poprzez siłę zyskuje potęgę;

Poprzez potęgę osiągam zwycięstwo.

Opublikowano
Najwidoczniej twoja bystrość nie przekracza sprytu 2 letniego dziecka...

to może byś napisał z czym się nie zgadzasz.

 

 

PS. nie jestem polonistą, ale chyba to twoje zdanie, które złożyłeś niezbyt się trzyma kupy.

Opublikowano

aha, czyli najpierw mają edytować to w notepadzie++ a potem ściągnąć IDE, w którym mogliby to robić dużo wygodniej...

 

szczerze. to nawet nie jest poradnik

nie wiadomo nawet do czego to służy. (nie jest to wprost napisane)

beznadziejnie opisane. Wręcz w ogóle

Już lepiej jakbyś wrzucił cały zlepiony kod, bo trudno się połapać w tym co napisałeś i nikt się z tego nic nie nauczy.

sam pewnie nie wiesz o co w tym kodzie chodzi.

 

 

-Poprawiłem opis hacka którego wykonanie jest opisane w poradniku.

-Wiem doskonale co ten kod zawiera.

-Wrzucenie całego zlepionego kodu, już skompilowanego z luncherem wyglądało by jak plik .exe np. WallHack 3.0

-Tak się składa że ja studiuje polonistykę i zapewniam Cię że to zdanie jest poprawne pod każdym względem.

 

Jeszcze jakieś pytania chłopcze?

Poprzez nienawiść zyskuję siłę;

Poprzez siłę zyskuje potęgę;

Poprzez potęgę osiągam zwycięstwo.

Opublikowano

twój "poradnik" składa się z

"

Na początku, gdzie jest komentarz

Bool for NoSky

dodajemy:"

"

Teraz szukamy

struct basehookmenu_s/

i edytujemy:"

"

Teraz szukamy

void InitMenu()

i edytujemy:"

"

Teraz dodajemy w

glBegin

:"

Ale nikt nie wie co to robi i do czego to jest...

 

 

-Poprawiłem opis hacka którego wykonanie jest opisane w poradniku.

nie wykonanie, a sklejenie go w całość.

 

 

-Tak się składa że ja studiuje polonistykę i zapewniam Cię że to zdanie jest poprawne pod każdym względem.

Dobra. Niech Ci będzie, że moja "bystrość nie przekracza sprytu."

Opublikowano

twój "poradnik" składa się z

"

Na początku, gdzie jest komentarz

Bool for NoSky

dodajemy:"

 

"

Teraz szukamy

struct basehookmenu_s/

i edytujemy:"

 

"

Teraz szukamy

void InitMenu()

i edytujemy:"

 

"

Teraz dodajemy w

glBegin

:"

 

Ale nikt nie wie co to robi i do czego to jest...

 

 

 

 

nie wykonanie, a sklejenie go w całość.

 

 

 

Dobra. Niech Ci będzie, że moja "bystrość nie przekracza sprytu."

 

 

Ktoś się męczy bo coś powstało a inni bez powodu potrafią go tak skrytykować ... :/ Ehh taki już jest ten świat, że jak chce się porozmawiać z kimś mądrym trzeba mówić samemu do siebie...

 

 

 

 

 

 

 

 

CAŁY PORADNIK POLEGA NA PRZEROBIENIU PODSTAWKI W HACKA (ROBIENIE WSZYSTKIEGO WEDŁUG PORADNIKA STWORZY HACKA KTÓREGO OPISAŁEM NA POCZĄTKU). PO UKOŃCZENIU WSZYSTKIEGO MOŻNA GO SKOMPILOWAĆ RAZEM Z LANUCHEREM GDZIE WSKAZANE JEST USTAWIENIE WŁASNEJ STRONY NA KTÓRĄ UŻYWAJĄCY CZITA BĘDĄ MUSIELI WEJŚĆ, A TAKŻE WSKAZANIE WŁASNEGO TŁA DLA APLIKACJI.

 

 

Proszę moderatora/administratora o usunięcie poradnika gdyż trudzenie się dla niewdzięczników to bezsens

Poprzez nienawiść zyskuję siłę;

Poprzez siłę zyskuje potęgę;

Poprzez potęgę osiągam zwycięstwo.

Opublikowano

Poznajesz?

http://www.cshacked.pl/archive/index.php?t-23111.html

 

Nadal uważasz, że rozumiesz ten kod i że jest Twój?

Opublikowano

"Nicolass" to mój drugi nick... Zresztą ja prosiłem by usunąć ten temat skoro się nie podoba!

Poprzez nienawiść zyskuję siłę;

Poprzez siłę zyskuje potęgę;

Poprzez potęgę osiągam zwycięstwo.

Opublikowano

Ewidentny plagiat.

 

 

 

P.S. Jeśli studiujesz polonistykę, to z przykrością muszę Cie poinformować, że nie zdasz. Ponieważ;

 

- "Najwidoczniej twoja bystrość nie przekracza sprytu 2 letniego dziecka..." : Bystrość i Spryt mają inną jednostkę mierzenia, to tak jakbyś napisał "Najwidoczniej twój głód nie przekracza 100km/h...".

 

- "skompilowanego z luncherem" : To zdanie nie ma sensu, i, byłbym zapomniał, piszę się launcherem.

 

- "Wrzucenie całego zlepionego kodu, już skompilowanego z luncherem wyglądało by jak plik .exe np. WallHack 3.0" : Wiesz, jest różnica między "Zlepiony kod" a "Skompilowany kod". Czytanie ze zrozumieniem to poziom co najwyżej podstawowy, a nie maturalny.

Opublikowano

Czy ktoś mógłby napisać albo dać linka do kompetentnego tutoriala jak napisać cheata do cs'a od 'zera' ? Może być w angielskiej wersji bo to co jest w tym temacie to matko..

  • 2 tygodnie później...
Opublikowano

Mi tam wszystko śmiga jak należy :) Ale cóż chyba jednak niektórzy na prawdę nie doceniają tego użytkownika... Zapraszam do działu z nauka kultury osobistej.

-Pomogłem?

 

-Bądź tak dobry i daj +

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...