Ok so if i just remove the unnecessary stuff, the signature will change?
- - - Updated - - -
How do I turn my hack into a poly hack?
it depends on what are your unnecessary stuff, just read the thread i sent you and you will be able to understand everything about signatures.
So the compiler changes the signature?
Only if in your code you leave shit like [add junk] or w/e so Polyloader knows to put some random junk code at that specific location every compile. Or swap some lines around.
If you don't specify polyloader doesn't do much besides compiling without optimization of your code. Which if you look at Polymeme's code and what gets randomized every compile it should make you nervous.
In order to successfully change the signature of a binary, you need to know how the compiler compiles C++ code ( if working with C++ ) into assembly; with that knowledge, you know exactly what parts you have to change in which way to successfully change the signature of this part of the code.
However, you never know what parts of a file Valve gathers. You don't know where they grab their signature nor how big it is. This means that you'd have to change the entire executable in order to be on the very safe side.
Softwares such as PolyLoader try to do that by giving you the option to add junk code in your entire executable. Keep in mind that they also disable optimization for these parts of the code ( or all parts, depending on the implementation of the software ), because with optimization, the compiler wouldn't include the junk code in the binary.
Though, those softwares shouldn't have the name "Poly" :/
Damn, for changing signature you actually need to change the codes.
e.g DWORD EntityList = 0x696969;
To change it let's say DWORD Cookie1337_EntityList = 0x696969;
If it gets detected you can change again. Another e.g DWORD mpghFTWYolo_EntityList = 0x696969;
And use your own codes , btw if you want to be sure get some hex viewer and check your dll/.exe file. Make a fcking photo to nonchanged , then to the changed. If there are any changes u'll know that it's ud.
Originally Posted by ProGaMeR21Ro
Damn, for changing signature you actually need to change the codes.
e.g DWORD EntityList = 0x696969;
To change it let's say DWORD Cookie1337_EntityList = 0x696969;
If it gets detected you can change again. Another e.g DWORD mpghFTWYolo_EntityList = 0x696969;
This is not true.
Variables aswell as functions are accessed via their memory address, not via their name.
Changing the name of variables / functions doesn't do anything.
Originally Posted by WasserEsser
This is not true.
Variables aswell as functions are accessed via their memory address, not via their name.
Changing the name of variables / functions doesn't do anything.
Probably not true, but this method works too lol.
Originally Posted by ProGaMeR21Ro
Probably not true, but this method works too lol.
It doesn't. Changing variable names / function names doesn't change a thing.
Consider the following code:
Code:
#include <ratio>
int Add( int a, int b )
{
return a + b;
}
int main( int argc, char** argv )
{
int Return = 0;
if ( argc > 2 )
{
for( int i = 1; i < argc; i++ )
{
int Number1 = atoi( argv[ i ] );
Return = Add( Return, Number1 );
}
}
return Return;
}
It will parse the command line and add all numbers together. You can start it via the command line with Duh.exe 8 15 8751 1 53 2 and it will add all together.
Note: Optimization is turned off in the following example.
I've generated the signature for the main function and taken out all wildcards. This will assure that it will only find this one particular function.
You can already see that they look exactly the same, but to assure that, i'll search for the byte pattern in all of those examples. If changing variable names / function names would do anything, you would not find the exact same signature in the other binaries.
Note that the compiler didn't even bother to create a seperate function for the Add function, it just inlined it. But the same principle for the variable naming applies to the function naming.
Variable/Function names are just a way for YOU and the COMPILER to know which variable / function you want to use, the binary will not include them.
Originally Posted by TheCookieBoyYT
How can I make a csgo cheat hard for VAC to detect? I've been talking to jammertobbles and he said something about adding junk code. Any Ideas?
Make your code DIFFERENT from others, junk code is not necessary if only few people use the same copy. Use inline functions (__forceinline), static linking, and on top of the cake obfuscate/protect it with software like VMProtect or Enigma. That should do the job for you.
Best option obviously is to combine & use all the suggestions you get to this thread.
Originally Posted by nullptr_t
and on top of the cake obfuscate/protect it with software like VMProtect or Enigma.
Packing it with Enigma or any other packer won't prevent it from getting VAC detected at all.