maxhat Newbie cheater
Reputation: 0
Joined: 10 Apr 2012 Posts: 24
|
Posted: Tue Sep 02, 2014 12:49 pm Post subject: [HELP] Digging deeper into opcodes |
|
|
The game that I am trying to hack is, Sacred 2 - Ice & Blood (Latest Build).
And whilst it seems that many have hacked it successfully I am having a bit of trouble with the health value. I chose this game specifically for its difficulty in that it deals with floats 90% of its values.
I need help with this cause I have successfully-unsuccessfully created a script that would ignore damage done to me but cause great damage to the enemy.
I have done the following in trying to fix this and my lack of know how is preventing from catching the little bug that keeps flying past my eyes:
-Data Struct
-Structure Spider
-Break & Trace
Now with these I have achieved the means to create my own struct that will always display the players:
+60 - Current Health
+64 - Maximum Health
+68 - Visible Health
My Comparison for the Character ID is @:
+14 - Always = int (4bytes) 94
AND
+30 - Always = int (4bytes) 08
As mentioned above when my script has been executed my player becomes ALMOST invulnerable, whilst I only need a few swipes to kill all the enemy players. Only exception is my player can still die.
How do I get it to the point of Invulnerability?
I snapshot as much as possible to help
__________________________________________________________________________________________________________________________
This is the range of the Break and Trace that when damage is dealt it jumps here and continues running onward:
Code: |
s2logic.cCreatureInfo::setHealth+D1 - 8B 45 DC - mov eax,[ebp-24]
s2logic.cCreatureInfo::setHealth+D4 - 89 45 C8 - mov [ebp-38],eax
s2logic.cCreatureInfo::setHealth+D7 - EB 06 - jmp s2logic.cCreatureInfo::setHealth+DF
s2logic.cCreatureInfo::setHealth+D9 - 8B 45 E4 - mov eax,[ebp-1C]
s2logic.cCreatureInfo::setHealth+DC - 89 45 C8 - mov [ebp-38],eax
s2logic.cCreatureInfo::setHealth+DF - 8B 45 C8 - mov eax,[ebp-38]
s2logic.cCreatureInfo::setHealth+E2 - 89 45 E0 - mov [ebp-20],eax
s2logic.cCreatureInfo::setHealth+E5 - 8B 45 E0 - mov eax,[ebp-20]
s2logic.cCreatureInfo::setHealth+E8 - F3 0F10 00 - movss xmm0,[eax]
s2logic.cCreatureInfo::setHealth+EC - F3 0F11 45 0C - movss [ebp+0C],xmm0
s2logic.cCreatureInfo::setHealth+F1 - 0FB6 45 08 - movzx eax,byte ptr [ebp+08]
s2logic.cCreatureInfo::setHealth+F5 - 8B 4D D8 - mov ecx,[ebp-28] // This is where the value of the damage is calculated and sent to xmm0 below
s2logic.cCreatureInfo::setHealth+F8 - F3 0F10 45 0C - movss xmm0,[ebp+0C]
// From this point is where I inject the actual value for the game to record and have it rewrite it back to xmm0 if it is my address it will write the max health back or w/e I chose at the time....
s2logic.cCreatureInfo::setHealth+FD - F3 0F11 44 81 60 - movss [ecx+eax*4+60],xmm0 // This is where all the magic is happening
s2logic.cCreatureInfo::setHealth+103- 0FB6 45 08 - movzx eax,byte ptr [ebp+08] // after my code is executed it returns back here to loaded and the game continues
s2logic.cCreatureInfo::setHealth+107- 85 C0 - test eax,eax
s2logic.cCreatureInfo::setHealth+109- 75 5B - jne s2logic.cCreatureInfo::setHealth+166
s2logic.cCreatureInfo::setHealth+10B- 8B 45 D8 - mov eax,[ebp-28]
s2logic.cCreatureInfo::setHealth+10E- D9 40 60 - fld dword ptr [eax+60]
s2logic.cCreatureInfo::setHealth+111- 8B 45 D8 - mov eax,[ebp-28]
s2logic.cCreatureInfo::setHealth+114- D8 70 64 - fdiv dword ptr [eax+64]
s2logic.cCreatureInfo::setHealth+117- D9 5D FC - fstp dword ptr [ebp-04]
s2logic.cCreatureInfo::setHealth+11A- D9 45 FC - fld dword ptr [ebp-04]
s2logic.cCreatureInfo::setHealth+11D- DD 05 80DA4B01 - fld qword ptr [s2logic.cEntityMount::`vftable'+184]
s2logic.cCreatureInfo::setHealth+123- DFF1 - fcomip st(0),st(1)
s2logic.cCreatureInfo::setHealth+125- DDD8 - fstp st(0)
s2logic.cCreatureInfo::setHealth+127- 76 10 - jna s2logic.cCreatureInfo::setHealth+139
|
__________________________________________________________________________________________________________________________
Here are photos of everything I could show without crashing the game
Description: |
|
Filesize: |
144.88 KB |
Viewed: |
2736 Time(s) |

|
Description: |
Structure Pointing to Two Distinct Values that may help differentiate between PlyR & Enemy + Health Values |
|
Filesize: |
475.42 KB |
Viewed: |
2736 Time(s) |

|
Description: |
Code thats being altered for Invulnerability |
|
Filesize: |
254.88 KB |
Viewed: |
2736 Time(s) |

|
Description: |
|
Filesize: |
138.29 KB |
Viewed: |
2736 Time(s) |

|
Description: |
|
Filesize: |
183.57 KB |
Viewed: |
2736 Time(s) |

|
|
|