-
Notifications
You must be signed in to change notification settings - Fork 1
Home
This program creates an overlay showing the map boundaries and the projectile trail. It takes wind in to account and corrects the trace. It also shows some techniques to access some ingame variabels. Its not possible to find static pointers to the players object. Therefore other methods are needed to finde the right memory.
The following steps are implemented:
The function/methode i'm aming at, is called every time the game updates the players object. The address of each player object is handled in it. This function is dynamicly generated. If the game is lunched, this function/methode is not present. To generate it, its nesessary to start the firing mode or an other mode. The pattern:
{ 0x30, 0x9A8, 0x00, 0x1C, 0x04, 0x188 };To extract thoes player addresses, a very simple code is injected.
// Code to Inject Size 55 Bytes
BYTE EAX_ExtractionCode[] = {
0x53, //1 save ebx on stack
0x57, //1 save edi on stack
0x56, //1 save esi on stack
0xBF, 0x40, 0x00, 0x014, 0x07, //5 index counter__________________________position to write beginns start address +0x04
0x83, 0x3f, 0x08, //3 compare for jump (counterlimit 7)
0x72, 0x06, //2 jump short over reset
0xC7, 0x07, 0x00, 0x00, 0x00, 0x00, //6 rest counter
0xBE, 0x44, 0x00, 0x14, 0x07, //5 load array base________________________position to write beginns start address +0x14
0x8B, 0xDF, //2 save index counter address
0x8B, 0x3F, //2 load counter value
0x89, 0x04, 0xBE, //3 copy eax to the array at index ...
0xFF, 0x03, //2 increment index counter
0x5E, //1 restore esi from stack
0x5F, //1 restore edi from stack
0x5B, //1 restore ebx from stack
0xD9, 0x58, 0x44, //3 original code
0x0F, 0xB6, 0x85, 0x27, 0xFF, 0xFF, 0xFF, //7 original code
0xE9, 0x00, 0x00, 0x00, 0x00, //5 jump back to original code ___________position to write beginns start address +0x2F
0x90, 0x90, 0x90, 0x90 // spacer
//array index counter = address +0x38
//array item 0 = start address +0x3C
// total amout of bytes needes = 92
};Now its possible to read all nesessary values to calculate the projectiles.

Some things that can be implemented:
- create all projectiles for all the different flight behaviors (currently i have only the "normal" behavior implemented, multiple traces are possible)
- enable auto-aim to deal maximum damage
- finish implementing bouncing
- find obstacles with CheatEngine
- take obstacles in to account (rebounce)
- find blackholes with CheatEngine
- take blackholes in to account
- find portals with CheatEngine
- take portals in to account
