This is for DEVELOPERS only!
Merccy's PolyLoader can be found here:
http://www.mpgh.net/forum/showthread.php?t=916581
On his thread, his guide for developers is a little lacking in explanation of what certain aspects of it do. So I decided to write a quick thread for developers on how to use polyloader to your advantage, for personal use and public releases. If you aren't familiar with what polyloader is, the link to his thread is above.
To start off using polyloader to develop, you should create a folder somewhere that is easily accessible for you (e.g. your desktop).
Inside there you will need to create 4 things:
command.txt
inout.txt
msg.txt
and a source directory.
Thats all that is required to set it up, now you just need to configure these files.
command
In here you just paste your compiler settings, this one is provided by Merccy and according to him should work for most hacks.
/EHsc /Od /MT *.cpp kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib /link /FORCE:MULTIPLE /OUT:hack.exe
inout
In the command.txt you had to input your parameters for the compilation of your source, there is a param. named /OUT.
The argument in /OUT should be the first line in this file, and the second should be what you want it to be compiled as.
hack.exe
RandomHackName.exe
Merccy if you are reading this, I would suggest removing this and just randomizing the file name and process name.
msg
In here you just put a message that you want to be displayed to the user when loading.
Hi
Now that you have setup your directory, you just need to modify your source code.
Modifying your source code
PolyLoader uses tags that you put in your code to analyze your file for what it should randomly change.
Here is a list of tags
[swaplines][/swaplines] See below (Block Section)
[swap_blocks][/swap_blocks] See below (Block Section)
[block][/block] See below (Block Section)
[add_junk /] See below (Junk Section)
[junk_enable x y] See below (Junk Section)
[junk_disable /] See below (Junk Section)
[junk_enable_declares /] See below (Junk Section)
[enc_string_enable /] Enables string randomization
[enc_string_disable /] Disables string randomization
Block Section
swaplines:
Swap lines just changes the order of lines.
It's paragraph taking like putting in a the and words random locations.
Before (pre-compilation)
[swaplines]
ClientFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("client.dll"), "CreateInterface");
EngineFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("engine.dll"), "CreateInterface");
VGUIFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vgui2.dll"), "CreateInterface");
VGUIMatFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vguimatsurface.dll"), "CreateInterface");
CvarFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vstdlib.dll"), "CreateInterface");
[/swaplines]
After (post-compilation)
Code:
VGUIMatFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vguimatsurface.dll"), "CreateInterface");
EngineFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("engine.dll"), "CreateInterface");
ClientFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("client.dll"), "CreateInterface");
CvarFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vstdlib.dll"), "CreateInterface");
VGUIFactory = (CreateInterfaceFn)GetProcAddress(GetModuleHandle("vgui2.dll"), "CreateInterface");
swap_blocks/block:
Swap blocks does the same thing as swap lines, just with large amounts of code.
You can even combine the two for swapception.
Inside your swap blocks tags, you have to define the regions of code that are blocks:
Code:
[swap_blocks]
[block]
int cool = 1;
int stuff = 2;
[/block]
[block]
int thanks = 3;
int merccy = 4;
[/block]
[block]
int for = 5;
int making = 6;
[/block]
[block]
int poly = 7;
int loader = 8;
[/block]
[/swap_blocks]
When compiled, PolyLoader would change the positions of these so they weren't in order like I had them.
It's book taking like putting in a the and paragraphs random locations.
Junk Section
Junk pretty much does makes what it's named after, junk.
[junk_enable x y] Enables junk generation and takes two parameters (0, 1, or 2) that aren't required.
0 Parameters specifies to put junk code after every ;
1 Parameter specifies to put x lines of junk code after every ;
2 Parameters specifies to put a random amount from x to y lines of junk code after every ;
A smart idea is to use [junk_enable 1 15] for the amount of junk, this makes the file size vary a lot between compiles, throwing off anti cheats by creating a different and unique signature every time.
[junk_disable /] Turns off junk generation.
[junk_enable_declares /] Should be used in header files because it only makes declares.
[add_junk /] Creates a block of junk code at the position.
Once you do this, turn the folder into a zip file and test it by running PolyLoader and compiling it.
PolyLoader helps bring open-source development to the cheating scene, something rarely done. By empowering developers with this tool, we can help decrease detection rates and increase the amount of contributors.
I hope this helps developers and encourages more to use this tool and distribute their cheats in a way that the community can modify to their own personal liking.