{Help} bei Lebenshack für GTA San Andreas

07/17/2011 16:10 Gandalph#1
Hallo erst mal
ja also ich hab ein Problem von der merkwürdigen Sorte und zwar ich schreibe grad an einem Trainer für GTA und zuerst hab ich mit einem Geldhack angefangen der hat gut geklappt, Super dann fang ich mit einem Lebenshack an, also Hex- Code rausgefiltert, genau einer ist übrig geblieben, noch mal vergewissert, dass der auch richtig ist, alles hat gepasst und trotzdem funktioniert es nicht, obwohl der Code der Gleiche ist wie der für den Geldhack (mit Ausnahme der Hex- Zahl, und der Variable)
Später hab ich noch einen Scan gemacht, aber es ist immer noch die einzige und gleiche Hex- Zahl.
Ich hab noch nicht so lange mit Gamehacking zu tun genauer gesagt seit 2 Tagen.

Hier ist mein Code:
[PHP]#include<NomadMemory.au3>
SetPrivilege("SeDebugPrivilege", 1)

$ProcessID =ProcessExists("gta_sa.exe")

While $ProcessID = False ; wenn gta_sa.exe nicht geöffnet wurde sleep 200
Sleep(200)
Wend

$Open = _memoryopen($ProcessID)
$Adresse = 0XCB45D61 ; Hex- code: ich benutze TSearch, merkwürdigerweise verändert sich die Value genau so wie das Leben im Spiel also wenn ich nur noch 50 Leben im Spiel habe steht im Tsearch dass die Value auch 50 ist, usw,
$Leben = 100

If $Leben < 99 Then; wenn das Leben unter 99 ist wird es wieder auf 100 gesetzt
_MemoryWrite($Adresse, $Open, $Leben, 'dword')
EndIf

While 1
Sleep (100)
WEnd/PHP]
07/17/2011 16:30 | Moep |#2
Ich bezweifle zwar stark, dass dein Script jemals funktioniert hat. Aber Hier ist eins, dass sollte funktionieren falls deine Adressen richtig sind.

Code:
#RequireAdmin

;==================================================================================
;Includes
;==================================================================================
#include <nomadmemory.au3>

;==================================================================================
;Set Options
;==================================================================================
Opt("WinTitleMatchMode", 3)

;==================================================================================
;Set Hotkeys
;==================================================================================
HotKeySet("{PAUSE}", "TogglePause")
HotKeySet("{DEL}", "Terminate")

;==================================================================================
;Define Window
;==================================================================================
Global $WinName = "ARGO"
Global $PID = _MemoryOpen(WinGetProcess($WinName))

If @error Then
	MsgBox(4096, "Fehler", "Das richtige Fenster konnte nicht gefunden werden")
	Exit
EndIf
WinActivate($WinName)

;==================================================================================
;Define Adresses
;==================================================================================
Global $currentHpMem = 0xcb45d61

;==================================================================================
;Define Global Vars
;==================================================================================
Global $Paused = False
Global $setHpValue = 100

;==================================================================================
;Main Loop
;==================================================================================
While 1
	If _MemoryRead($currentHpMem, $PID) < $setHpValue Then _MemoryWrite($currentHpMem, $PID, $setHpValue)
WEnd

;========================================================================
;TogglePause()
;==================================================================================
Func TogglePause()
	$Paused = NOT $Paused
	While $Paused
		sleep(10)
	WEnd
EndFunc   ;==>TogglePause

;==================================================================================
;Terminate()
;==================================================================================
Func Terminate()
	Exit 0
EndFunc   ;==>Terminate
07/17/2011 17:16 Gandalph#3
Quote:
Originally Posted by |
Moep |;11813684
Ich bezweifle zwar stark, dass dein Script jemals funktioniert hat.
[CODE]
#include<NomadMemory.au3>

SetPrivilege("SeDebugPrivilege", 1) ;sollte beim arbeiten mit der Memory immer gesetzt werden

;Der Quellcode, der nach der While Schleife steht wird erst beachtet, wenn GTA_SA gestartet wurde


$ProcessID = ProcessExists("gta_sa.exe") ;gibt die PID zurück welche wir für _memoryopen brauchen

If $ProcessID = False Then
Tooltip ("Starte GTA San Andreas",600,600)

EXit
Else


$Open = _memoryopen($ProcessID)

$Adresse = 0XB7CE50 ;um in AutoIt eine Hex angabe zu machen setzt ihr einfach ein 0x davor(Die Adresse kann bei euch anders sein)
$Geld =9999999
_MemoryWrite($Adresse, $Open, $Geld, 'dword');die Funktion, die die Punkte verändert.am ende muss noch die art
;am ende der Funktion muss noch der Memory Typ geschrieben werden ('dword' = 4Byte)

Endif
/CODE]

Das hier funzt und das ist das gleiche in "Geld" :)
Ich schau mir dein Script mal an, sind ein paar Begriffe da die ich noch nicht so intus hab aber das lässt sich lösen dieser Befehl _memoryRead wollte ich eigentlich auch benutzten aber ich dachte ich hätte den falsch im Kopf und der heisst iwie anderst und hab ihn weggelassen:)

Das Fenster hab ich weggelassen weil ich ja noch mehr Funktionen will und die Füg ich dann alle zusammen in ein GUI ein.

Leider ist es mir nicht geklückt für irgendeine andere Hackfunktion Hex- codes zu finden, sei es für die Munition, die Zeit. ICh probier mal Rüstung und Eigenschaften mal sehen.
Probiere jetzt mal das Script aus

Wie kommt man nur auf so komlexe Strukturen gibt es da irgendeinen Trick oder ist das einfach nur erfahrung?


Habs jetzt verstanden dein Skript, und angepasst, aber irgendwie funktioniert es noch nicht. Den Befehl mit der Pause verstehe ich nicht kannst du den mal kurz erklären?
07/17/2011 17:17 Che#4
Probiers mal hiermit:

PHP Code:
#include <NomadMemory.au3>
#Include <Misc.au3>
#RequireAdmin
$READ=0
$DLL
=DLLOPEN("user32.dll")
$ADRESSE=CB45D61 ;deine speicheradresse
$PROCESS
="gta_sa.exe" ;dein prozess
$WERT
=100 ;dein neuer wert für die hp

WHILE 1
SLEEP
(150)
IF 
PROCESSEXISTS($PROCESS)<>0 THEN ;überprüft ob prozess an ist
$PID
=PROCESSWAIT($PROCESS) ;liest prozess id aus
$OPEN
=_MEMORYOPEN($PID) ;öffnet den speicher
_MEMORYWRITE
($ADRESSE,$OPEN,$WERT,"dword") ;schreibt den wert in deinen speicher
ENDIF

IF 
_ISPRESSED("23",$DLL)THEN ;guckt ob die taste "Ende" gedrückt wurde
MSGBOX
(0,"By xChex","Hack beendet") ;gibt eine msg box aus 
EXIT ;beendet das script
ENDIF
WEND

DLLCLOSE
($DLL
ich denke jedoch, dass deine speicheradresse falsch ist! ich recherchier nochmal nach der richtigen pointer

€dit:
hp: 0xB6F5F0 + 0x540
dh: $ADRESSE=B6F5F0+540
dh wiederum: $ADRESSE=B6FB30

beides aber nicht sicher!
[Only registered and activated users can see links. Click Here To Register...]

PS: bei autoit lässt man das 0x weg!
07/17/2011 17:24 | Moep |#5
Quote:
Originally Posted by Gandalph View Post
[CODE]#include<NomadMemory.au3>

SetPrivilege("SeDebugPrivilege", 1) ;sollte beim arbeiten mit der Memory immer gesetzt werden

;Der Quellcode, der nach der While Schleife steht wird erst beachtet, wenn GTA_SA gestartet wurde


$ProcessID = ProcessExists("gta_sa.exe") ;gibt die PID zurück welche wir für _memoryopen brauchen

If $ProcessID = False Then
Tooltip ("Starte GTA San Andreas",600,600)

EXit
Else


$Open = _memoryopen($ProcessID)

$Adresse = 0XB7CE50 ;um in AutoIt eine Hex angabe zu machen setzt ihr einfach ein 0x davor(Die Adresse kann bei euch anders sein)
$Geld =9999999
_MemoryWrite($Adresse, $Open, $Geld, 'dword');die Funktion, die die Punkte verändert.am ende muss noch die art
;am ende der Funktion muss noch der Memory Typ geschrieben werden ('dword' = 4Byte)

Endif

/CODE]

Das hier funzt und das ist das gleiche in "Geld" :)
Ich schau mir dein Script mal an, sind ein paar Begriffe da die ich noch nicht so intus hab aber das lässt sich lösen dieser Befehl _memoryRead wollte ich eigentlich auch benutzten aber ich dachte ich hätte den falsch im Kopf und der heisst iwie anderst und hab ihn weggelassen:)

Das Fenster hab ich weggelassen weil ich ja noch mehr Funktionen will und die Füg ich dann alle zusammen in ein GUI ein.

Leider ist es mir nicht geklückt für irgendeine andere Hackfunktion Hex- codes zu finden, sei es für die Munition, die Zeit. ICh probier mal Rüstung und Eigenschaften mal sehen.
Probiere jetzt mal das Script aus

Wie kommt man nur auf so komlexe Strukturen gibt es da irgendeinen Trick oder ist das einfach nur erfahrung?
Das Script kann klappen, ist aber auch ein anderes als das aus post 1. ;) Problem bei dem hier ist nur dass es nur einmal ausgeführt wird, da die dazugehörige endlosschleife fehlt.
Zum Memorys suchen kann ich dir cheatengine empfehlen nutze ich persönlich immer. Mit Tseachrch habe ich leider keinerlei erfahrung.
Scriptaufbau hat viel mit Erfahrung zu tun, lernt man aber mit der Zeit. Anfangs sind einfachere Strukturen für Anfänger sogar besser, um die lesbarkeit zu erleichtern.
07/17/2011 18:02 Gandalph#6
XChex: seit wann kann man denn das 0X weglassen?
Das wusste ich nicht. Allerdings gibt er mir jetzt auch ne Fehlermeldung für das weglassen:rtfm::mofo:
Dein Heexcode hat auch nicht funktioniert und meiner auch nicht:confused:

Probier mal mit Cheatengine die Memories zu suchen

hab einen Wert der aber auch nicht funzt

Das Merkwürdige ist aber doch, dass der Wert den ich am Anfang hatte von dem Value wert gepasst hätte: Wenn ich volles Leben hatte war er 100
wenn ich keins hatte 0
wenn ich nur noch die hälfte hatte 50
bei 1/4 war er 25
und so weiter
07/17/2011 18:15 | Moep |#7
Quote:
Originally Posted by Gandalph View Post
XChex: seit wann kann man denn das 0X weglassen?
Das wusste ich nicht. Allerdings gibt er mir jetzt auch ne Fehlermeldung für das weglassen:rtfm::mofo:
Dein Heexcode hat auch nicht funktioniert und meiner auch nicht:confused:

Probier mal mit Cheatengine die Memories zu suchen
Wenn du den Wert gefunden hast, dann kannst du gleich in ce testen ob der wert überhaupt beschreibbar ist indem du einfach den value veränderst.
07/17/2011 18:47 Gandalph#8
Hab ihn von 100 auf 50 geändert aber es ist nichts sehenswertes im Spiel passiert

2. Versuch nix rausbekommen?!
Hat jemand eine Idee wie man Wert rauskriegt ich habs bis jetzt so gemacht:
bei volles Leben - 100 eingegeben und scannen lassen
mich töten lassen schnell das Spiel pausiert- 0 Eingeben scannen lassen usw.

hab das gleiche jetzt mit Rüstung probiert funzt auch nicht :(

23:26 Uhr: Hab die Hex für die Munitionen der Waffen rausgefunden. natürlich noch nicht alle dauert noch, aber zumindestens schon von ein paar. das Prinziep ist ja immer gleich ABER!!!:
Lebenshack funzt immer noch nicht.