Video Tutorial – Calling Conventions
This is my video tutorial on calling conventions in C++. This tutorial is divided into 4 parts, covering cdecl, stdcall, fastcall and thiscall.
Calling Conventions - Part 1 - Introduction
Calling Conventions - Part 2 - cdecl and stdcall
Calling Conventions - Part 3 - fastcall
Calling Conventions - Part 4 - thiscall
Enjoy.
Video Tutorial – Writing Code Caves
This is my video tutorial on writing Code Caves.
Click here for part 1 - Finding the Values!
Click here for part 2 - Writing the Code Cave!
Enjoy.
Video Tutorial – Patch Worms Reloaded To Bypass CRC
This is my video tutorial on how to bypass the CRC check inside Worms Reloaded. With this you can create new effects, test weapon changes and use other language files!
Enjoy.
Video Tutorial – Structures In Memory
This is my video tutorial on structures in memory. We are going to focus on player structures which can be found in many commercial games and how to reverse them
Click here for the program and source code!
Enjoy.
Video Tutorial – Function Hooking
This is my video tutorial on function hooking.
The hooking function:
void WriteJMP(byte* location, byte* newFunction)
{
DWORD dwOldProtection;
VirtualProtect(location, 5, PAGE_EXECUTE_READWRITE, dwOldProtection);
location[0] = 0xE9;
*((dword*)(location + 1)) = (dword)(newFunction - location) - 5;
VirtualProtect(location, 5, dwOldProtection, &dwOldProtection);
} Complete Source:
// dllmain.cpp : Defines the entry point for the DLL application.
#include "stdafx.h"
#include <windows.h>
typedef unsigned char byte;
typedef unsigned short word;
typedef unsigned int dword;
byte countSwitch = 0;
DWORD UpdateTimeCall = 0x01001D6C; //This call calls the UpdateTime function
DWORD UpdateTimeRetn = 0x01001D71; //This is the place where we will return 0x01001D6C + 0x05
DWORD UpdateTimeFunc = 0x01002FE0; //This is the updateTime function
void WriteJMP(byte* location, byte* newFunction){
DWORD dwOldProtection;
VirtualProtect(location, 5, PAGE_EXECUTE_READWRITE, &dwOldProtection);
location[0] = 0xE9;
*((dword*)(location + 1)) = (dword)(newFunction - location) - 5;
VirtualProtect(location, 5, dwOldProtection, &dwOldProtection);
}
void _declspec(naked) hTimeFunc(){
if(countSwitch == 0)
{
countSwitch = 1;
_asm
{
JMP UpdateTimeRetn
}
}
else
{
countSwitch = 0;
_asm
{
CALL UpdateTimeFunc
JMP UpdateTimeRetn
}
}
}
void initHooks(){
WriteJMP((byte*)UpdateTimeCall,(byte*)hTimeFunc); //Writes a jump from the original call to our custom function
}
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
initHooks();
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Enjoy.
Video Tutorial – Memory Pattern Scanning
This is my video tutorial on scanning memory patterns to find addresses in memory that change during recompilation.
The pattern scanning function:
bool bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
for(;*szMask;++szMask,++pData,++bMask)
if(*szMask=='x' && *pData!=*bMask )
return false;
return (*szMask) == NULL;
}
DWORD dwFindPattern(DWORD dwAddress,DWORD dwLen, BYTE *bMask, char * szMask) {
for(DWORD i=0;i<dwLen;i++)
if( bDataCompare( (BYTE*)( dwAddress+i ),bMask,szMask) )
return (DWORD)(dwAddress+i);
return NULL;
}
SigMaker 0.3 by P47R!CK
Enjoy.
VAMemory – Video Tutorial – How To Create A Trainer in C#
For this tutorial you will need the VAMemory DLL. You can download the newest version.
Download: VAMemory (v. 1.3)
Enjoy.