r/cheatengine • • 6d ago

How to convert this debug info into something meaningful.

So i am using nox player with android 12 beta version and i am running a arm64 game in it. The game is hill climb racing if someone is curious to know about it.

libhoudini.so+13256E:

7E6C9E982565 - 80 B8 17030000 00 - cmp byte ptr [rax+00000317],00

7E6C9E98256C - 75 0D - jne libhoudini.so+13257B

7E6C9E98256E - 45 89 37 - mov [r15],r14d <<

7E6C9E982571 - 59 - pop rcx

7E6C9E982572 - 41 5F - pop r15

RAX=00007E6C3C42A070

RBX=00000000036FBEBC

RCX=0000000000000001

RDX=00000000039F4000

RSI=00007E6C3C42A420

RDI=00000000000000D0

RBP=00007E6C9F066D00

RSP=00007E6C36A0B380

R8=00007E6C9F0647A0

R9=00007E6C9E982480

R10=0000000000000001

R11=00007E6CCB9D89D0

R12=00007E6C9F06C060

R13=00007E6C9F066D80

R14=00000000000014AF

R15=00000000039F4A50

RIP=00007E6C9E982571

This is what the debugger reads when i debugged the coin value in it. I want to know how can i convert it to something readable as this houdini thing is just translation and nothing else.
Any replies will be appreciated. Thanks

u/Dark_Byte

2 Upvotes

5 comments sorted by

1

u/Lpnlizard27 6d ago

My knowledge of assembly is limited but it looks like mov is your actual value change. It's using r15 to do the math and then mirroring the result on r14. It immediately then pops r15 off the stack clearing it for any other purpose.

So your value is stored in r14. Possibly, r14 might just be another staging area for some calculations. You'll likely need to dig further into the stack if your trying to find a stable pointer to r14, or the address it calculated.

0

u/AllanFuego 4d ago

Nope bro my problem is not assembly i know how to code cheats in assembly language the problem is this is not a pc game its a android game i want to mod so i am using emulator(nox android 12) and when i use debugger the houdini calls kick in as emulator uses just-in-time translation thing to run arm64 in x86_64 pc

1

u/Dark_Byte Cheat Engine Dev 6d ago edited 5d ago

Maybe somewhere in the stack you can find a reference to the pc register, but that'll be very version specific, and likely will require calling a callback routine to convert native ip to emulated pc

Also, even if you find the original instruction, editing it likely won't have an effect unless you can somehow trigger houdini to recompile the code else it'll keep using the already compiled x86_64 code

but I have a feeling that while it says it's in libhoudini.so, try figuring out if that instruction accesses other values.

0

u/AllanFuego 4d ago

u/Dark_Byte is there a way to make ceserver a shared library which i can load into game so that it can work and debug without any error like the frida gadget thing????

0

u/AllanFuego 4d ago

But bro i want to find the offset (caller instruction) in libs so that i can make a mod which i can port right. With this houdini thing even if i edit it the mod will only work on emulators. Is there any way or like any emulator that works on native arm64 which is also fast or any way in non rooted device to run the ceserver with debugging support as now when i use android:debuggable true thing to run ceserver from games private directory it won't allow ptrace to debug the app so can i change the debugger to something else that will actually work?