Search the Community
Showing results for tags 'Il2Cpp'.
-
Hi there, I am trying to manipulate memory value (related to health) at runtime based on an identified offset address. I can currently access the memory address that holds the health value by manually searching the exact health value of double type, but this address changes when I close and open the application. I would eventually like to persistently modify the health value after closing and opening the application, without having to manually search for the address. I am unsure what to do next in order to modify the health value using libil2cpp offsets. These are the following steps I've done so far: Used a rooted 64-bit Android emulator (Nox Player) with arm64-v8a instruction set. Retrieved the latest .apk file directly from the Android emulator's root /data directory using "adb pull". Dumped the "libil2cpp.so" file from the game's .apk using il2cppdumper. Used the dumped output from above to identify interesting function names "public double get_hp()" that contains offset addresses such as "Offset: 0x18D0258". On GameGuardian I've used "goto", then selected "Xa" and chose "libil2cpp.so". On GameGuardian I've used "Offset calculator" where the base address is from above and the offset is "18D0258" from step 4. I am presented with a couple of interesting ARM64 instructions: LDR D0, [X0, #0x28]; RET; My understanding is that X0 (general-purpose register, like a variable) holds a memory address and 0x28 offset is added to the X0 register and the result of X0 + 0x28 becomes the accessed memory address, where the value inside it is loaded into the D0 register. Knowing that this is related to public double get_hp() what minimal changes do I need to make so that I can return a specific value to change the health or make it so that the health does not change at all? Thanks!