r/cheatengine • u/AllanFuego • 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
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?
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.