guess I'll type in english even if it sucks, so nobody should cry "translate plz, can't read damn s*it!!!111"
Well I checked the *search the memory*-method and that rly sucked. I ended up reading ~960MB ...to slooooow
Now here is a start using codeinjection, this codecave continously creates a copy of 150 objectbase-addresses and stores them at 0x008F0D00 ... thats at the end of the datasection if I remember correct.
Now its time to modify my bot to read out these 150objects ... easymode funstuff inc:D
I now just have to find a fast way to identify a *collectable object* like wood. I could compare the objectname at offset 0x278 but that would be very slow and retarted ... there must be a better way ... I'm sure there is some kind of flag for this somewhere.
important: filter multiple addresses before doing anything!
Code:
[COLOR="Blue"]the location for codeinjection:
00630DC2 - 3b 7e 04 - cmp edi,[esi+04]
00630DC5 - 75 02 - jne 00630dc9
00630DC7 - ff d3 - call ebx
00630DC9 - 8b 4f 0c - mov ecx,[edi+0c]
00630DCC - 8b 01 - mov eax,[ecx] // RoM reads objectbaseaddress
00630DCE - 8b 90 08 01 00 00 - mov edx,[eax+00000108]
00630DD4 - 6a 00 - push 00
00630DD6 - ff d2 - call edx
00630DD8 - 8d 4c 24 10 - lea ecx,[esp+10]
JUMP:
00630DC9 - e9 d2 8c 17 00 - jmp 007a9aa0 // jump to codecave
00630DCE <--------------------------------------------------------------------------------------------------------+
^
VARS: |
008F0CFC - counter |
|
CODECAVE: |
007A9AA0 - 8b 4f 0c - mov ecx,[edi+0c] // restore originalcode destroyed by jump |
007A9AA3 - 8b 01 - mov eax,[ecx] // restore originalcode destroyed by jump |
007A9AA5 - 81 3d fc 0c 8f 00 58 02 00 00 - cmp [008f0cfc],00000258 // compare counter to 600 |
007A9AAF - 7c 0a - jnge 007a9abb // jump if counter is < than 600 ------+ |
007A9AB1 - c7 05 fc 0c 8f 00 00 00 00 00 - mov [008f0cfc],00000000 // reset counter to zero | |
007A9ABB - 53 - push ebx // backup ebx <-----------------------+ |
007A9ABC - 31 db - xor ebx,ebx // set ebx zero |
007A9ABE - 03 1d fc 0c 8f 00 - add ebx,[008f0cfc] // add counter to ebx |
007A9AC4 - 81 c3 00 0d 8f 00 - add ebx,008f0d00 // add address for our data to ebx |
007A9ACA - 89 0b - mov [ebx],ecx // create copy objectbaseaddress |
007A9ACC - 83 05 fc 0c 8f 00 04 - add dword ptr [008f0cfc],04 // increate counter by 4 |
007A9AD3 - 5b - pop ebx // restore ebx |
007A9AD4 - e9 f5 72 e8 ff - jmp 00630dce // jump back ---------------------------->+
DATA:
008F0D00 - 768 bytes room till next section starts
150 objects * 4 bytes = 600 bytes
[/COLOR]
ofc if the game gets updated this must be updatet too!
Everybody with atleast a half brain should be able to use this for a harvestbot and even more funstuff (radars?)... good luck.
edit:
now that looks damn good:
[Only registered and activated users can see links. Click Here To Register...]
modified bubblesort to filter multiple addresses and some strange ones:
Code:
void bubbleSort(unsigned long *array,int length)
{
int i,j;
for(i=0;i<length;i++)
{
for(j=0;j<i;j++)
{
if(array[i]==array[j] || array[j]<0x5000000)
array[j]=0;
if(array[i]>array[j])
{
int temp=array[i]; //swap
array[i]=array[j];
array[j]=temp;
}
}
}
}