Jump to content
  • 0

I need help about Arm64 opcodes


Arteus
 Share

Question

So I'm playing a game using the lua script damage cheat, and I've found the location of the value, it's just that I want to know how it multiplies damage accurately using hexadecimal constants, can anyone teach me the concept?

*DPS = Damage/Attack

Photo 1 : Normal

Photo 2 : Normal Value

Photo 3 : 2x DPS/AtkScreenshot_20230716_200834_8ae6ee3e7b906e7c42026d3232617c7e.thumb.jpg.4f7c4f56791408955a411b3bdd1d6bab.jpgScreenshot_20230716_200819_8ae6ee3e7b906e7c42026d3232617c7e.thumb.jpg.c6dc3571cf6b97057cd42beebf37a7cd.jpgScreenshot_20230716_200928_8ae6ee3e7b906e7c42026d3232617c7e.thumb.jpg.5eeb66870ae588e464076ef926ac1c34.jpgScreenshot_20230716_200920_8ae6ee3e7b906e7c42026d3232617c7e.thumb.jpg.85246e141f2a979b1ffb005133bb5384.jpg

Photo 4 : 2x DPS/Atk Value

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 1

[ @Arteus ]
---
Hexadecimal is only a form of presenting data. The data itself may vary but in this case, we're going to deal with architectural instructions. What it means that: it is depends on your device architecture (x86, x64 arm32, arm64). The concept itself has been explained quite a lot on this forum. I can give you some references:
Arm Patching
Hex Language
---

 SUB SP, SP, #0x60

SP means Stack Pointer where it is something temporary being stored. "SUB SP" simply means it is being reserved again at Stack Pointer and SP as destination (SUB SP, SP) while #0x60 is something that will subtract the SP. I'm not sure what it is going to be reserved, but, based on applied patches:

FMOV S0, #0x40000

FMOV is an instruction that moves floating point numbers. Meanwhile, S0 is floating point register and #0x40000000 is decimal 2 in hex form. It's equivalent to:

FMOV S0, #2

---
Remember that Instruction is executed one at a time, so it looks like in the end, something from that Stack Pointer will be used on floating point registers.

Quote

RET

Is basically a marker for endings block of instruction. You can convert Float into Hex form using some online calculator:
Float Converter
---

Link to comment
Share on other sites

  • 0
On 7/17/2023 at 4:09 AM, Xaviesz said:

[ @Arteus ]
---
Hexadecimal is only a form of presenting data. The data itself may vary but in this case, we're going to deal with architectural instructions. What it means that: it is depends on your device architecture (x86, x64 arm32, arm64). The concept itself has been explained quite a lot on this forum. I can give you some references:
Arm Patching
Hex Language
---

 SUB SP, SP, #0x60

SP means Stack Pointer where it is something temporary being stored. "SUB SP" simply means it is being reserved again at Stack Pointer and SP as destination (SUB SP, SP) while #0x60 is something that will subtract the SP. I'm not sure what it is going to be reserved, but, based on applied patches:

FMOV S0, #0x40000

FMOV is an instruction that moves floating point numbers. Meanwhile, S0 is floating point register and #0x40000000 is decimal 2 in hex form. It's equivalent to:

FMOV S0, #2

---
Remember that Instruction is executed one at a time, so it looks like in the end, something from that Stack Pointer will be used on floating point registers.

Is basically a marker for endings block of instruction. You can convert Float into Hex form using some online calculator:
Float Converter
---

Thank you man, that float converter really really helps me

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.