![]() ![]() Once you've done the top part, then start a CE Search using "Unknown Initial value" as the. Note: that Stat Boost Items like STR/MAG/AGI ALWAYS add +2 value, while LDR adds +1/+2/+3 depending on the LDR of level of the unit currently. ![]() Do this FIRST or you won't be able to find the correct address. So, to start finding values for A SPECIFIC UNIT, you'll need to use any usable item on it first (XP/CP Codex, or Stat boost items, etc.). everything is back to what it was, so exit Mov ,eax //write the new value into the old value Or eax,edx //add the bits of the original value Shl eax,1 //shift left by 1 bit (multiply by 2) Mov eax,ecx //eax gets the user input value Mov edx, //edx now contains the original value at this point edx contains the address to write the value to function declared as: stdcall void ConvertBackRoutine(int i, unsigned char *output) The convert back routine should hold a routine that converts the given integer back to a row of bytes (e.g when the user wats to write a new value) Shr eax,1 //shift right by 1 bit (divide by 2) Mov eax, //second fun fact, addressing with 32-bit registers doesn't work in 64-bit, it becomes a 64-bit automatically (most of the time) at this point ecx contains the address where the bytes are stored Note: Keep in mind that this routine can be called by multiple threads at the same time. function declared as: stdcall int ConvertRoutine(unsigned char *input) The convert routine should hold a routine that converts the data to an nteger (in eax) ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |