PostSo you want to make your own undetected hacks? (best UD methods and how to learn)

Posts 111 of 11 · Page 1 of 1
So you want to make your own undetected hacks? (best UD methods and how to learn)
Many people consider "pasting" to be a bad thing, but I consider it an opportunity to learn the language better and to eventually move on to creating your own hacks.

Requirements
-First I would at least try to familiarize your self with what is going on so you aren't just completely lost.
>>Watch a beginner tutorial on C++ or two, get an idea of the syntax so you can know a little bit about what you are looking at.

-Find a few free sources that look like decent starting points
>>Popular choices include Ayyware fixes and Ayyware rewrites. Find two or more sources with a fair amount of features, and download them to your desktop.
>>Choose something fairly new, so you wont have to update any offsets.

-Have Visual Studio 2015/2017 Community. (It's free, if you don't have it go download it or else you wont be getting anywhere)

Step One
-After you have your couple sources you want to pick one that either you like the menu better, maybe the cheat is a bit better/has better features, or whatever, just pick one of them to use as your 'base' for the cheat. (The other one will still be useful, DW)

-Open up the solution (mycheat.sln) in Visual Studio, set it to Windows 8.1 SDK, and click upgrade if it asks.

-At the top set the build to be "Debug" and "x86"

-Click "Build", and and make sure it compiles by default if it doesn't, look at the errors you're getting and try to figure out what needs to be fixed (or copy paste your error to google and see if someone else has a fix for it) (Try changing Debug to Release and recompile and see if that fixes it, if not change it back to Debug and begin troubleshooting)

-Move on after you have a successfully building base for your cheat.
>>You can even try launching csgo with "-insecure" in the launch options and injecting it if you want to really make sure it works.

Step Two
Now that you have a working base for your cheat, since it's public there is a 99% chance it is detected, or will be in the next couple days. You are going to have to change the "signature" of the hack.
>>A "signature" is how VAC will detect your cheat, it will scan for known "signatures" and if it finds one it knows it's a cheat, it'll ban you.

>>Lucky for you, changing the signature is relatively easy.

-Look around through some of the hack files, familiarize yourself with what is in your cheat. you'll probably have a "dllmain.cpp" file, and probably a couple other files for different parts of the cheat. (Ex. "Aimbot.cpp", "Misc.cpp", "ESP.cpp", etc.)
>>You mainly are going to be looking through the hack source files (.cpp) not the header files (.h). The cpp files will be where the actual "code" for the hack is.

-Next you're going to want to open your other cheat source you downloaded and look around in it as well. (PROBABLY MAKE SURE IT'S NOT THE EXACT SAME OR SUPER SIMILAR, LIKE TWO DIFFERENT "AYYWARE FIXES".)

-Notice the similarities between the two cheats such as where the aimbot code is, where the menu code is, where the misc hacks code is, etc.

-For this example I have a "Suicide.cc" source, and a random Ayyware fix source. Let's take a look at both of their "Rage Strafe" functions.
SUICIDE.CC:
Code:
void CMiscHacks::RageStrafe(CUserCmd *pCmd)
{
	float strafespeed = 100;

	IClientEntity* pLocal = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());

	bool bKeysPressed = true;
	if (GUI.GetKeyState(0x41) || GUI.GetKeyState(0x57) || GUI.GetKeyState(0x53) || GUI.GetKeyState(0x44)) bKeysPressed = false;

	if ((GetAsyncKeyState(VK_SPACE) && !(pLocal->GetFlags() & FL_ONGROUND)) && bKeysPressed)
	{
		pCmd->forwardmove = (1550.f * strafespeed) / pLocal->GetVelocity().Length2D();
		pCmd->sidemove = (pCmd->command_number % 2) == 0 ? -450.f : 450.f;
		if (pCmd->forwardmove > 450.f)
			pCmd->forwardmove = 450.f;
	}
}
AYYWARE:
Code:
void CMiscHacks::RageStrafe(CUserCmd *pCmd)
{

	IClientEntity* pLocal = (IClientEntity*)Interfaces::EntList->GetClientEntity(Interfaces::Engine->GetLocalPlayer());

	static bool bDirection = true;

	static float move = 450.f;
	float s_move = move * 0.5065f;
	static float strafe = pCmd->viewangles.y;
	float rt = pCmd->viewangles.y, rotation;

	if ((pCmd->buttons & IN_JUMP) || !(pLocal->GetFlags() & FL_ONGROUND))
	{

		pCmd->forwardmove = move * 0.015f;
		pCmd->sidemove += (float)(((pCmd->tick_count % 2) * 2) - 1) * s_move;

		if (pCmd->mousedx)
			pCmd->sidemove = (float)clamp(pCmd->mousedx, -1, 1) * s_move;

		rotation = strafe - rt;

		strafe = rt;

		IClientEntity* pLocal = hackManager.pLocal();
		static bool bDirection = true;

		bool bKeysPressed = true;

		if (GUI.GetKeyState(0x41) || GUI.GetKeyState(0x57) || GUI.GetKeyState(0x53) || GUI.GetKeyState(0x44))
			bKeysPressed = false;
		if (pCmd->buttons & IN_ATTACK)
			bKeysPressed = false;

		float flYawBhop = 0.f;

		float sdmw = pCmd->sidemove;
		float fdmw = pCmd->forwardmove;

		static float move = 450.f;
		float s_move = move * 0.5276f;
		static float strafe = pCmd->viewangles.y;

		if (Menu::Window.MiscTab.OtherAutoStrafe.GetIndex() == 2 && !GetAsyncKeyState(VK_RBUTTON))
		{
			if (pLocal->GetVelocity().Length() > 45.f)
			{
				float x = 30.f, y = pLocal->GetVelocity().Length(), z = 0.f, a = 0.f;

				z = x / y;
				z = fabsf(z);

				a = x * z;

				flYawBhop = a;
			}

			if ((GetAsyncKeyState(VK_SPACE) && !(pLocal->GetFlags() & FL_ONGROUND)) && bKeysPressed)
			{

				if (bDirection)
				{
					AutoStrafeView -= flYawBhop;
					GameUtils::NormaliseViewAngle(AutoStrafeView);
					pCmd->sidemove = -450;
					bDirection = false;
				}
				else
				{
					AutoStrafeView += flYawBhop;
					GameUtils::NormaliseViewAngle(AutoStrafeView);
					pCmd->sidemove = 430;
					bDirection = true;
				}

				if (pCmd->mousedx < 0)
				{
					pCmd->forwardmove = 22;
					pCmd->sidemove = -450;
				}

				if (pCmd->mousedx > 0)
				{
					pCmd->forwardmove = +22;
					pCmd->sidemove = 450;
				}
			}
		}
	}
}
-They aren't the same, but are intended for the same use (being ragestrafe) so we can copy the contents of the function from the suicide.cc cheat, and replace our rage strafe contents with it. (NOTE: just take between the braces "{ }" and don't copy the top part like
Code:
void CMiscHacks::RageStrafe(CUserCmd *pCmd)
so that we don't mess up function calls to it within other parts of the code.

-Hit compile and see if you get any errors, if you do, trouble shoot why you might be getting these errors. Are you trying to make a call to grab information from that cheats menu that you don't have on your menu? If something like that is the issue, you can try replacing it with a static value, or even figure out how to integrate it into your cheat's menu.

Figure out a couple places you can do this in, replace the rage strafe, the bhop, maybe the 'GetFovToPlayer' in the ragebot, etc. the more you do, the better the results.

Step Three
-Determine pieces you don't really need or could stand to remove, this will help a lot to change your signature and make it more UD.

-Let's use an example from the same source as before (Suicide.cc). They have a couple chat spam features that I really have no interest in using.

In "MiscHacks.cpp"
Code:
switch (Menu::Window.MiscTab.OtherChatSpam.GetIndex())
	{
	case 0:
		// No Chat Spam
		break;
	case 1:
	        //Namestealer
	        ChatSpamName();
		break;
	case 1:
		// Regular
		ChatSpamRegular();
		break;
	}
-I'm going to delete all of this along with all the functions it references.

You can see some of these calls later on in "MiscHacks.cpp":
Code:
void CMiscHacks::ChatSpamxxxxx()
{
	static clock_t start_t = clock();
	double timeSoFar = (double)(clock() - start_t) / CLOCKS_PER_SEC;
	if (timeSoFar < 0.001)
		return;

	static bool wasSpamming = true;
	//static std::string nameBackup = "Ixxxxxx";

	if (wasSpamming)
	{
		static bool useSpace = true;
		if (useSpace)
		{
			change_name ("xxxxxx");
			useSpace = !useSpace;
		}
		else
		{
			change_name("xxxxxx");
			useSpace = !useSpace;
		}
	}

	start_t = clock();
}

void CMiscHacks::ChatSpamDisperseName()
{
	static clock_t start_t = clock();
	double timeSoFar = (double)(clock() - start_t) / CLOCKS_PER_SEC;
	if (timeSoFar < 0.001)
		return;

	static bool wasSpamming = true;

	if (wasSpamming)
	{
		change_name("\xxxxxx\n");
	}

	start_t = clock();
}

void CMiscHacks::ChatSpamName()
{
	static clock_t start_t = clock();
	double timeSoFar = (double)(clock() - start_t) / CLOCKS_PER_SEC;
	if (timeSoFar < 0.001)
		return;

	std::vector < std::string > Names;

	for (int i = 0; i < Interfaces::EntList->GetHighestEntityIndex(); i++)
	{
		// Get the entity
		IClientEntity *entity = Interfaces::EntList->GetClientEntity(i);

		player_info_t pInfo;
		// If it's a valid entity and isn't the player
		if (entity && hackManager.pLocal()->GetTeamNum() == entity->GetTeamNum() && entity != hackManager.pLocal())
		{
			ClientClass* cClass = (ClientClass*)entity->GetClientClass();

			// If entity is a player
			if (cClass->m_ClassID == (int)CSGOClassID::CCSPlayer)
			{
				if (Interfaces::Engine->GetPlayerInfo(i, &pInfo))
				{
					if (!strstr(pInfo.name, "GOTV"))
						Names.push_back(pInfo.name);
				}
			}
		}
	}

	static bool wasSpamming = true;
	//static std::string nameBackup = "xxxxxx";

	int randomIndex = rand() % Names.size();
	char buffer[128];
	sprintf_s(buffer, "%s ", Names[randomIndex].c_str());

	if (wasSpamming)
	{
		change_name(buffer);
	}
	else
	{
		change_name ("p$i 1337");
	}

	start_t = clock();
}


void CMiscHacks::ChatSpamRegular()
{
	// Don't spam it too fast so you can still do stuff
	static clock_t start_t = clock();
	int spamtime = Menu::Window.MiscTab.OtherChatDelay.GetValue();
	double timeSoFar = (double)(clock() - start_t) / CLOCKS_PER_SEC;
	if (timeSoFar < spamtime)
		return;

	static bool holzed = true;

	if (Menu::Window.MiscTab.OtherTeamChat.GetState())
	{
		SayInTeamChat("xxxxxx OWNS ME AND ALL");
	}
	else
	{
		SayInChat("xxxxxx OWNS ME AND ALL");
	}

	start_t = clock();
}
-Also in the menu it has the options for chat spam, which I just removed, so I don't want those in the menu. I can find those by looking around a little in the menu file. (CTRL+F is your friend.)

In "Menu.cpp":
Code:
OtherChatSpam.SetFileId("otr_spam");
	OtherChatSpam.AddItem("Off");
	OtherChatSpam.AddItem("Name");
	OtherChatSpam.AddItem("Normal");
	OtherGroup.PlaceLabledControl("Chat Spam", this, &OtherChatSpam);

	OtherNameSpam.SetFileId("otr_spam");
	OtherNameSpam.AddItem("Off");
	OtherNameSpam.AddItem("SUICIDE.CC");
	OtherNameSpam.AddItem("SUICIDE.CC Colored");
	OtherNameSpam.AddItem("Blank");
	OtherNameSpam.AddItem("PU Sucks");
	OtherNameSpam.AddItem("xxxxx);
	OtherNameSpam.AddItem("xxxxx");
	OtherGroup.PlaceLabledControl("Name Spam", this, &OtherNameSpam);
-After removing all of this, my cheat still compiles fine and I can begin removing other parts. I would do this with as many pieces as you can stand to remove.

STEP FOUR
-I'd say adding junk code in is a good idea JUST to be safe. Don't want any unwanted VAC bans.

-Most people use something similar to:
Code:
void Junk()
{
	float pJunkcode = 542894213;
	if (pJunkcode = 34921523473490534);
	pJunkcode = 230443243213748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 17321842125)
		pJunkcode = 18345132543425;
	pJunkcode = 1732423198465;
	pJunkcode = 43578534;
	pJunkcode = 134142142189242;
	if (pJunkcode = 17111111132425)
		pJunkcode = 183211111111425;
	pJunkcode = 17321421111425;
	pJunkcode = 11114324328911;
	if (pJunkcode = 3492432432490534);
	pJunkcode = 23048921893748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1713892425)
		pJunkcode = 183421421425;
	pJunkcode = 17324214925;
	pJunkcode = 43578195346534;
	if (pJunkcode = 34921523473490534);
	pJunkcode = 230489213748943;
	pJunkcode = 4390751390453;
	pJunkcode = 111178978911;
	if (pJunkcode = 3492514324320534);
	pJunkcode = 23048921893748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 34973490534);
	pJunkcode = 230489213748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1732189342425)
		pJunkcode = 18421421543425;
	pJunkcode = 1732423198465;
	pJunkcode = 435789513416534;
	if (pJunkcode = 1713892425)
		pJunkcode = 1838912425;
	pJunkcode = 17324118925;
	pJunkcode = 43578195346534;
	if (pJunkcode = 349214324320534);
	pJunkcode = 439043753910453;
	pJunkcode = 134142142189242;
	if (pJunkcode = 1714214225)
		pJunkcode = 18321421421;
	pJunkcode = 17321111111425;
	pJunkcode = 111178978911;
	if (pJunkcode = 349254324320534);
	pJunkcode = 23048921893748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1713892425)
		pJunkcode = 1838912425;
	pJunkcode = 17324118925;
	pJunkcode = 43578195346534;
	if (pJunkcode = 3492154324320534);
	pJunkcode = 230489213748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1732189342425)
		pJunkcode = 18345132543425;
	pJunkcode = 17324421465;
	pJunkcode = 230484211148943346;
	pJunkcode = 43904213910453;
	pJunkcode = 17323214211425;
	pJunkcode = 111178978911;
	if (pJunkcode = 34925142190534);
	pJunkcode = 23048921893748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1713892425)
		pJunkcode = 1838912425;
	pJunkcode = 17324118925;
	pJunkcode = 4357421421;
	if (pJunkcode = 34921523473490534);
	pJunkcode = 230489213748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1732189342425)
		pJunkcode = 18345132543425;
	pJunkcode = 1732423198465;
	pJunkcode = 435789513416534;
	if (pJunkcode = 34934624213474);
	pJunkcode = 2304892371148943346;
	pJunkcode = 4390434210453;
}
-But also remember to make calls to your junk code in your already existing code so like put:
Code:
Junk();
-As an example you can do this to your "AutoJump" function:
Code:
void Junk()
{
	float pJunkcode = 542894213;
	if (pJunkcode = 34921523473490534);
	pJunkcode = 230443243213748943;
	pJunkcode = 4390751390453;
	pJunkcode = 17324118925;
	pJunkcode = 4357421421;
	if (pJunkcode = 34921523473490534);
	pJunkcode = 230489213748943;
	pJunkcode = 4390751390453;
	if (pJunkcode = 1732189342425)
		pJunkcode = 18345132543425;
	pJunkcode = 1732423198465;
	pJunkcode = 435789513416534;
	if (pJunkcode = 34934624213474);
	pJunkcode = 2304892371148943346;
	pJunkcode = 4390434210453;
}

void CMiscHacks::AutoJump(CUserCmd *pCmd)
{
        Junk(); //<<< HERE IS OUR CALL TO THE JUNK CODE!
	if (pCmd->buttons & IN_JUMP && GUI.GetKeyState(VK_SPACE))
	{
		int iFlags = hackManager.pLocal()->GetFlags();
		if (!(iFlags & FL_ONGROUND))
			pCmd->buttons &= ~IN_JUMP;

		if (hackManager.pLocal()->GetVelocity().Length() <= 50)
		{
			pCmd->forwardmove = 450.f;
		}
	}
}
All you need to do is copy paste your junk code function right above another pre-existing function then in the function add in a call to the "Junk" function you just made above it. (Ex. Junk();)

Every time you copy paste in your junk function change up the numbers a good bit and name the function something else like "Junk2", "Junk3", and so on. (And call Junk2(); Junk3(); etc)

-The more functions you add your junk code to, the better. I'd say 4-6 ATLEAST per main .cpp file like Aimbot, Autowall, ESP, Menu, etc.

-Once you have an amount of junk functions you think is a good amount, build your cheat again and make sure it compiles, if not click on and check out the errors and see if you can troubleshoot what you did wrong.

STEP FIVE
-Now that you have your hopefully UD cheat compiled, you'll need an undetected injector. Look around on the forums and find a new one, or google around and look for a not popular one, maybe one that doesn't even say it's used for CSGO. The one I use is a "manual map" injector, which is arguably the most secure way to inject your cheat. So probably look for one of those if you can.

-Once you find an injector that looks like it shouldn't be detected, you should be good to go. Open up that injector and inject that DLL to csgo!

Want to actually learn, and improve your cheat?
Look around on forums for "sources" to different parts of cheats, and figure out how to integrate them into your cheat base. This is THE BEST way to make your cheat 100% undetected, and probably make it better than everyone else's regular pasted cheats.



Good luck on your cheat making! If you have any questions or other tips I may have missed, feel free to comment below! Sorry that this guide takes a LITTLE bit of knowledge on C++, but honestly why bother doing this at all if you can't take a little bit of time to figure some of this out! It'll make you better with cheats and programming stuff in the long run!
Excellent piece of giving details ! I would like to say that using HEX editor would be useful incase of changing signatures as most cheats wont update their functions everyday !
Quote Originally Posted by SBK_CRUZER View Post
Excellent piece of giving details ! I would like to say that using HEX editor would be useful incase of changing signatures as most cheats wont update their functions everyday !
Never used any sort of hex editors with making cheats, so not sure how easy that is to do, but anything to change it more from the original source for sure! Or did you mean hex editors in terms of updating your offsets, because in that case there are quite a few guides written on how to do that within the code to make your cheat work with the current version of CSGO.
>Also I might note that times when you need to update your "offsets" in the cheat only happen every once in a while, you won't need to do it all the time or anything.
"Own" cheat.
One more step: if there is a major game update come to mpgh and to another forum and pray for fix, cause "your" hake no work.

And hex editors doesn't worth shit.
I say "own" cheat as in like hopefully you use this guide as a starting point and learn, gotta start somewhere right?
Quote Originally Posted by crabshack View Post
I say "own" cheat as in like hopefully you use this guide as a starting point and learn, gotta start somewhere right?
bs, updating a fully featured internal cheat is NOT a starting point for learning.
this is a starting point for becoming a sc*m.

Unfortunately I don't see the "make your own undetected hacks" part anywhere in this thread.

ergo your thread title and content are misleading.
Quote Originally Posted by gigagiga View Post
bs, updating a fully featured internal cheat is NOT a starting point for learning.
this is a starting point for becoming a sc*m.

Unfortunately I don't see the "make your own undetected hacks" part anywhere in this thread.

ergo your thread title and content are misleading.
I see you are one of those, very anti-pasta people, BUT

I never said you SHOULD be using a fully featured source, I would honestly recommend against using those too, using a minimal source would be much better of course, but it depends on how familiar with coding and the CSGO offsets and modifying them.

The main reason for this is just to kind of show people that it really isn't hard to begin making your own features within cheats without worry about the whole detection and stuff, which I've seen a lot of people question and seem to have trouble with.

It's really what you make of it, yes this guide can be used to just rip some public cheats, but that's their choice and if they want to do that, whatever. But I still would argue it's a learning opportunity for those who want to. I see no reason to try to roast people that can't write their own cheats from scratch because they don't even know the starting point.
Quote Originally Posted by gigagiga View Post
bs, updating a fully featured internal cheat is NOT a starting point for learning.
this is a starting point for becoming a sc*m.

Unfortunately I don't see the "make your own undetected hacks" part anywhere in this thread.

ergo your thread title and content are misleading.
Wow you are just pathetic. Obviously Im learning by looking at a source and then seeing the similarities in calls and how it all looks, specially if I look at 2 different sources. Specially when im already learning other coding languages. It can be a starting point for learning, everyone isn't as stubborn like you

Quote Originally Posted by crabshack View Post
-snip-
HEy man , what did you mean by this? "-But also remember to make calls to your junk code in your already existing code so like put Junk();" So do you mean i should put Junk(); above

void Junk()
{
float pJunkcode = 542894213;

So it looks like
Junk();
void Junk()
{
float pJunkcode = 542894213;

I didn't really get what you ment
Thanks for this great job bro You're the best your thread encouraged me to start making my own cheats and everything worked well even if i don't still really now the basics i have studied c++ only 14 hours and i didn't even needed what i studied to follow your thread
By the way here is a better junk code generator it's easier and 100x faster
http://night-gang.ga/junkcode.html
very nice2 hear this
Hey guys I have made a bhop hacks if I want to add features how can I make a menu?
Any tutorial for menu making?
Posts 111 of 11 · Page 1 of 1

Post a Reply

Similar Threads

Tags for this Thread

Need help?