Okay, So I'm confused about this single floating-point scalar instruction... can I treat xmm registers the same as eax registers when I am creating a code cave? I was just working on NOPs, but that is just the easy way out of coding, and now i'm wanting to kick it up a notch to code injection with code caves. And I need to know if I can treat xmm registers like eax registers for code injection.
[Edited by Sil3nt_Pr0digy, 3/18/2010 10:59:34 PM]
Okay, So I found out that I can't... and that I need to isolate it more, to find the location of the player's health... i'm trying to find websites which properly explain how movss works.
while test NOPing lines of code that access the health function, I found an address that when NOP'd results in one hit kills for nero, dante, and any enemies.
Nice little find for an accident.
It is the same premise as Heaven Or Hell mode, except it will work to your advantage on Dante Must Die mode, because normally enemies have normal health, and Dante will die from 1 hit... It evens it up as if it was still Heaven Or Hell mode :þ
Decided to move on to Dead Space while trying to understand the XMM registers better. It seems that almost every game I come across uses those XMM registers for health and similar things.
I started using code injection for my trainers :þ yay, I no longer have to do the noobish way of simply NOPing code and I actually build a success code cave. Not that it was difficult, I'm just glad that I am grasping it correctly.
The problem is that it is writing the second half for both pieces of code(the call instruction and the nop instruction) and if I am messing with the code in CE, the it works fine; But if I don't, and I run it, the game crashes, curious as to why it was doing this, I used Debug.
When running Debug I found that 12 bytes per button were not being written, the first half of the code; curious, isn't it?
Does anyone know why this would happen? why can I inject my code in CE, but not using the poke function in a TMK built trainer?
Ha! I hacked my first XMM register... well, sortof... i used the same address that the movss was using, and I instead used mov, to the same address, and then converted a float value to dec, then to hex, coded it in, and voila, Infinite Oxygen!
Found out what the problem was... I was using a Read-Only address for my code cave, dumb mistake, I forgot to uncheck to scan for read-only address. Oh well, it's fixed now :þ