| 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: | 2760 Time(s) |  
		| 
  
 
 |  
 
 
	
		
	 
		| Description: | 
			
				| Structure Pointing to Two Distinct Values that may help differentiate between PlyR & Enemy + Health Values |  |  
		| Filesize: | 475.42 KB |  
		| Viewed: | 2760 Time(s) |  
		| 
  
 
 |  
 
 
	
		
	 
		| Description: | 
			
				| Code thats being altered for Invulnerability |  |  
		| Filesize: | 254.88 KB |  
		| Viewed: | 2760 Time(s) |  
		| 
  
 
 |  
 
 
	
		
	 
		| Description: |  |  
		| Filesize: | 138.29 KB |  
		| Viewed: | 2760 Time(s) |  
		| 
  
 
 |  
 
 
	
		
	 
		| Description: |  |  
		| Filesize: | 183.57 KB |  
		| Viewed: | 2760 Time(s) |  
		| 
  
 
 |  
 |  |