WARNING: Wiki content is an archive, no promise about quality!
Please choose a tutorial page:
- Fundamentals -- Information about C
- Tools
- Registers
- Simple Instructions
- Example 1 -- SC CDKey Initial Verification
- Example 2 -- SC CDKey Shuffle
- Example 2b -- SC CDKey Final Decode
- The Stack
- Functions
- Example 3 -- Storm.dll SStrChr
- Assembly Summary
- Machine Code
- Example 4 -- Smashing the Stack
- Cracking a Game
- Example 5 -- Cracking a game
- Example 6 -- Writing a keygen
- .dll Injection and Patching
- Memory Searching
- Example 7 -- Writing a cheat for Starcraft (1.05)
- Example 7 Step 1 -- Displaying Messages
- Example 7 Step 1b -- Above, w/ func ptrs
- Example 7 Final
- Example 8 -- Getting IX86.dll files
- 16-bit Assembly
- Example 9 -- Keygen for a 16-bit game
- Example 10 -- Writing a loader
#include <stdio.h>
#include <windows.h>
void __stdcall DisplayMessage(char *strMessage, int intDurationInSeconds)
{
int intDisplayUntil = GetTickCount() + (intDurationInSeconds * 1000);
int fcnDisplayMessage = 0x469380;
__asm
{
push 0
push intDisplayUntil
mov edx, 0
mov ecx, strMessage
call fcnDisplayMessage
}
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
DisplayMessage("\x03Loading test plugin", 30);
break;
case DLL_PROCESS_DETACH:
DisplayMessage("\x03Unloading test plugin", 30);
break;
}
return TRUE;
}