Well since a lot of you guys asking me on how to make a trainer, I'll just post a tutorial on how to make a simple trainer like I've released. This was a total spoon feed so it will be copy and paste and edit. First, there are few things you need:
1. Microsoft Visual Studio 2010
2. A lil knowledge about Assembly.

Ok, let's start this. Run your Microsoft Visual Studio 2010. Click New Project->Win32 and Enter your Project name. Lets say Trainer. Click Ok and next, choose DLL and Empty project. Now you are in Trainer.cpp blank page. Ok, now go Solution Explorer(You could find it easily a View tab) and you'll see 4 things there:
1. External Dependencies
2. Header Files
3. Resource Files
4. Source Files

















Now you need to add in a few files inside these folders to make it work. To add a file, simply right click->Add and choose your extension. For Header Files, choose .h extension. For Source Files, choose .cpp extension.  I'm lazy so I posted a screenshot for you all to look at, add all the files inside the screenshot.






















Ok, if you follow my simple tutorial, these would be your files to make your first dll trainer. We'll use the most simple example for this tutorial.Super tubi.
//Tubi(Updated by nerrazzuri msea v93)
[enable]
00488AA6: //75 ? 83 7C 24 ? ? 75 ? 8B ? ? ? ? ? FF 70 ? 83 C0 ? 50
DB 90 90
[disable]
00488AA6: //75 ? 83 7C 24 ? ? 75 ? 8B ? ? ? ? ? FF 70 ? 83 C0 ? 50
jne 00488ADE //byte 75 36

Now, Open up your Trainer.h and paste the codes below into it.
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#include Window.h (add <>, I couldn't add here)

#include tchar.h (add <>, I couldn't add here)


//ADD HACKS BELOW *THIS IS KINDA LIKE A LIST OF THE HACKS YOU ARE ADDING*

void SuperTubi(__in BOOL bEnable);//To add in more hacks, simply copy this line and paste it at the bottom, and change the name SuperTubi to others for example NoKnockBack.


After you have done, now we move to the part where everyone loves, GUI. Go back to the Solution Explorer->Right Click at the Resource Files. Add a Resource(not item) and choose Dialog(DO NOT CLICK THE +, click Dialog and click new and you'll bring to a Dialog Box which is like below:

















Add in a checkbox at the Dialog Editor(You can found it easily at View->Toolbars) like mine below.

















You could resize your Dialog Box and the size you edited will be show up while you inject into the game.

Open up, dllmain.h and paste this inside.
#include Window.h (add <>, I couldn't add here)

#include tchar.h (add <>, I couldn't add here)



extern HINSTANCE g_h_main_instance;

And finally your gui.h
#include Window,h (add <>, I couldn't add here)

#include stdlib.h (add <>, I couldn't add here)

#include CommCtrl (add <>, I couldn't add here)

#include "resource.h"

DWORD WINAPI CreateGUIThread(__in LPVOID lParam);
INT_PTR CALLBACK DialogProc(__in HWND hwndDlg,__in UINT uMsg,__in WPARAM wParam,__in LPARAM lParam);

Now go to your Source Files, and open up your dllmain.cpp and paste this
#include "dllmain.h"
#include "gui.h"

HINSTANCE g_h_main_instance;

BOOL WINAPI DllMain(__in HINSTANCE hinstDLL, __in DWORD fdwReason, __in LPVOID lpvReserved)
{
  switch(fdwReason)
  {
  case DLL_PROCESS_ATTACH:
    g_h_main_instance = hinstDLL;    
    DisableThreadLibraryCalls(hinstDLL);    
    CreateThread(0, 0, CreateGUIThread, 0, 0, 0);
    break;
  }
  return TRUE;
}

And your gui.cpp
#include "gui.h"
#include "dllmain.h"
#include "cheats.h"

DWORD WINAPI CreateGUIThread(__in LPVOID lParam)
{
DialogBox(g_h_main_instance, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogProc);
return 0;
}

INT_PTR CALLBACK DialogProc(__in HWND hwndDlg,__in UINT uMsg,__in WPARAM wParam,__in LPARAM lParam)
{
int checked;

switch(uMsg)
{
case WM_INITDIALOG:

return TRUE;

case WM_COMMAND:
switch(LOWORD(wParam))
{
       case IDC_CHECK1:    
checked = IsDlgButtonChecked(hwndDlg, IDC_CHECK1);
SuperTubi(checked);
break;
}
break;

case WM_CLOSE:
EndDialog(hwndDlg, 0);
break;
}

return 0;
}


Ok, now finally, open up your Trainer.cpp, add this
#include "Trainer.h"

BOOL WriteAddress(__in LPVOID lpcvBase, __in LPCVOID lpcvWriteValue, __in size_t uSize)
{
DWORD old_protection = 0;

__try
{
if(VirtualProtect(lpcvBase, uSize, PAGE_READWRITE, &old_protection))
{
memcpy_s(lpcvBase, uSize, lpcvWriteValue, uSize);
VirtualProtect(lpcvBase, uSize, old_protection, &old_protection);
}
else
return FALSE;
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
return FALSE;
}
return TRUE;
}

VOID SuperTubi(__in BOOL bEnable)
{
static BYTE normalbytes[] = {0x75, 0x36}; //DISABLED bytes of the hack
static BYTE hackonbytes[] = {0x90, 0x90}; //ENABLED bytes of the hack
static DWORD HackAddr = 0x00488AA6; //Address of the hack

if(bEnable)
WriteAddress((LPVOID)HackAddr, hackonbytes, 2); //Number of ENABLED bytes...
else
WriteAddress((LPVOID)HackAddr, normalbytes, 2); //Number of DISABLED bytes...
}

Well, this is the main part of the codes. I'll explain it 1 by 1, follow me tightly. Firstly you need to know the bytes for the hacks. Simply open Cheat Engine and go to the address and you'll see something like 00488AA6(Address)-75 36(Bytes)-jne 00488ADE(Opcodes). Copy down the bytes part.
static BYTE normalbytes[] = {0x75, 0x36};
Your original bytes.(The one found in Cheat Engine.)

static BYTE hackonbytes[] = {0x90, 0x90};
Your edited bytes.(90 = nop = do nothing)

static DWORD HackAddr = 0x00488AA6;
Your hack address.

WriteAddress((LPVOID)HackAddr, hackonbytes, 2);
The bytes you need to activate the hacks. (Super tubi have 2 because 90 90, so if your hack bytes are 90 90 90, then change the 2 to 3)

WriteAddress((LPVOID)HackAddr, normalbytes, 2);
Your disable bytes amount.(Change it if you have different amount)

Now you have your done your Trainer.cpp, go to gui.cpp. If you have more checkbox to tick with, do it like me.



















The IDC_CHECK1 is your checkbox ID to find it, back to Solution Explorer->Resource Files->Dialog->Double click your Dialog Box, and right click your check box and select properties. There will be a properties box beside(either on left or right) and find the (Name) and it would be your check box name. Change both the IDC_CHECK1 to your check box name. And lastly, Change the SuperTubi name to the hack name you've declared in the Trainer.h(must exactly the same) and you are done!

Click the save all button at the top(I assume you could search yourself) and click Build->Build Solution to see whether there is error or not. If your codes are perfectly done, go back to Solution Explorer, right click the Solution 'Trainer' (1 project) and select Configuration Manager. Change Debug to Release and go back to Build and click Rebuild Solution. And CONGRATULATIONS! You have just done your first dll trainer!.

To find your dll, simply go My Document->;Visual Studio 2010->;Project->;Trainer->;Release.

Well, that's all from my tutorial, hope you'll have fun making your own trainer. Good Luck guys!

[Dowload Link]
Microsoft Visual Studio 2010 Professional
Mirror

Credit:
Goomba @GK for the teaching me how to do it.
Me, for typing this freaking long tutorial  :D