Page 1 of 1

Invincibility AOB Help!

Posted: Sat Feb 10, 2024 4:07 pm
by ReiMariZu
Heya!
I usually have no issue with "locking" the invincibility frames of a character in a game.
I was messing around an old title for commodore home comupetr in retroarch, and as usual I finded the invincibility value, checked what writed to the address and made an AOB injection, that replaced a code with a code that did nothing. But if I do that, the game freeze!
This is the part of the code that I dont get:
mov [rax+rcx],dx
How can I replace it with something that dont freeze the game? What is odd, is that if I freezed the value this code had access to, the invincibility cheat worked just fine... But ofc, is one of those value that change each time I load the game... Any help?!

Re: Invincibility AOB Help!

Posted: Mon Feb 12, 2024 12:47 pm
by satandidnowrong
Afaict if your script is freezing the game, you're overwriting expected function.
Post more context; game name, surrounding code, et cetera.
I don't imagine we can help with out it.
I don't imagine I will be your saviour here.
I can take a look, just leaving pointers for how I imagine they expect.
They want to see your effort and be able to engage.

I am interested to learn how you find invincibility frames tbh.

Re: Invincibility AOB Help!

Posted: Tue Feb 13, 2024 9:09 am
by ReiMariZu
I usually find for an uknow value when I have the invincibility frames on, then wait a second, and decrease the value search, then when I no longer have it on, do stuff in the game and unchange the value, then die on purpose and increase the value search, and repeat. Is kinda easy.
Anyway, is an old home computer game emulated on retroarch, here's the code:

------------------------------------------------------------------------------------------------

aobscanmodule(INJECT,puae_libretro.dll,66 89 14 08 C3 66 2E 0F 1F 84 00 00 00 00 00 48 8B 05 * * * * 23 0D 83) // should be unique
alloc(newmem,$1000,INJECT)

label(code)
label(return)

newmem:

code:
mov [rax+rcx],dx
ret
jmp return

INJECT:
jmp newmem
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
db 66 89 14 08 C3

unregistersymbol(INJECT)
dealloc(newmem)

------------------------------------------------------------------------------------------------

As I said, locking the value, made the invincibility code work, but making this script doing nothing, freeze the game instead.

Re: Invincibility AOB Help!

Posted: Thu Feb 15, 2024 8:48 am
by ReiMariZu
My main question is, instead of making the script do nothing, how can I lock the values instead?

Re: Invincibility AOB Help!

Posted: Thu Feb 15, 2024 11:20 am
by Send
ReiMariZu wrote:
Thu Feb 15, 2024 8:48 am
My main question is, instead of making the script do nothing, how can I lock the values instead?
What about generating some pointermaps and doing a ptr scan so that you can change the value/freeze?

Re: Invincibility AOB Help!

Posted: Thu Feb 15, 2024 4:25 pm
by ReiMariZu
Send wrote:
Thu Feb 15, 2024 11:20 am
What about generating some pointermaps and doing a ptr scan so that you can change the value/freeze?


In my experience, pointermaps dont work lot of time, so I stopped to use em to save time.

Re: Invincibility AOB Help!

Posted: Thu Feb 15, 2024 5:19 pm
by Send
You use pointer maps to do a pointer scan.

Re: Invincibility AOB Help!

Posted: Thu Feb 15, 2024 6:02 pm
by ReiMariZu
Send wrote:
Thu Feb 15, 2024 5:19 pm
You use pointer maps to do a pointer scan.
Yeah as I said, pointer scans never works for me. The only thing I can find, is the invincibility frames value, I can freeze that to keep the invincibility time go on forever, but that value change each restart and each stage too. I can find what writes to it, but at that point, I dont know what to do, since if I makethe code do nothing, the game freeze. I pasted the script of it earlier.
Is there a way to lock the script, in the same way you can lock the value?!

Re: Invincibility AOB Help!

Posted: Sat Feb 17, 2024 10:19 am
by ReiMariZu
This should be related to invincibility / shield as well somehow:

[ENABLE]

aobscanmodule(INJECT,puae_libretro.dll,88 14 08 C3 66 66 2E 0F 1F 84 00 00 00 00 00 0F 1F 40 00 8B) // should be unique
alloc(newmem,$1000,INJECT)

label(code)
label(return)

newmem:

code:
mov [rax+rcx],dl
ret
nop word ptr cs:[rax+rax+00000000]
jmp return

INJECT:
jmp newmem
nop A
return:
registersymbol(INJECT)

[DISABLE]

INJECT:
db 88 14 08 C3 66 66 2E 0F 1F 84 00 00 00 00 00

unregistersymbol(INJECT)
dealloc(newmem)

Re: Invincibility AOB Help!

Posted: Sat Feb 17, 2024 1:20 pm
by VampTY
Ok, i have no idea of what game you're having problems with, just want to say these:

: From your code, does the address is used by only one function or more, if there's more, do a cmp or backtrack.
: If is only one, one single thing accessed, use a pointer to use it whenever you'll want, allocate it in your script
: If the address will somehow switch, use some wildcards!
: Is that the real script (no modifications) or was it modified?If so, paste the real script. :)
: Invincibility, the timer mostly, can be delayed using proper commands, look in MemView when you're taking a hit!

;)

Perhaps you'll get more help, or not, is all up to you, take care! :wub:

Re: Invincibility AOB Help!

Posted: Sun Feb 18, 2024 3:32 am
by SunBeam
The user is stating it's a RETRO game in the first post. That instantly makes me think of EMULATORS. Further down, he says puae_libretro.dll. Which brings us here: [Link]. So whatever he's done or you're suggesting won't cut it, as he is NOPing emulator EXECUTABLE CODE and you're telling him to hook such code as if it's some independent PC game. Reading his comment suggests he's not yet at that level where code injection would be a solution for him.

Re: Invincibility AOB Help!

Posted: Sun Feb 18, 2024 9:22 am
by ReiMariZu
ReiMariZu wrote:
Tue Feb 13, 2024 9:09 am
is an old home computer game emulated on retroarch
Yeah as I said is emulated.
What is interesting, is that if I use the AOB script that "do nothing" I made (the one I posted are all "untouched"), the game freeze as I said, but if I toggle the script on during invincibility frames (the game freeze), and then toggle it off (the game unfreeze), then the code work untll the next stage, where I have to repeat the process. Which hey, is working, but I have no idea why!
In years of cheating, this never happened!

Re: Invincibility AOB Help!

Posted: Mon Apr 29, 2024 3:48 pm
by sergey979
You can use instruction as pointer, if she attitude or write only on address health your personage
For example if instruction was code:
movss xmm1,[rsi+00000658]
then i paste under newmem:
push rax
mov rax,_health
mov [rax],rsi
pop rax
and add in table address which use _health as pointer with offset 658
now enough activate this script for getting needed address
Similar this instruction write on flag invincibility, not know what can then happens, but you can try add under original instruction
mov byte ptr [rax+rcx],01 or mov byte ptr [rax+rcx],00 and look how it works in game