![]() ![]() You can check if it saved correctly by scrolling to another unit then going back to the edited one. Do it 2 more times, and you should be able to guess which value it is from scan results. After that, use "Value increased by" and then the number from the note above. 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 |