• Trainer
  • Forums
  • Suche
  • Members
  • Kalender
  • Hilfe
  • Extras
Forum stats
Show team
Neue Beiträge ansehen
Heutige Beiträge ansehen
Home of Gamehacking - Archiv
Login to account Create an account
Login
Benutzername:
Passwort: Passwort vergessen?
 



  Home of Gamehacking - Archiv Coding Visual Basic 6, VB.NET
1 2 3 4 Weiter »
VB 2010 - Dead Island Riptide Trainer

Seiten (2): 1 2 Weiter »
Ansichts-Optionen
VB 2010 - Dead Island Riptide Trainer
Struppi Offline
Junior Member
**
Beiträge: 47
Themen: 12
Registriert seit: Apr 2012
Bewertung: 0
#1
10.06.2013, 21:56
Hallöchen,

Ich wolte mal ein kleinen Trainer erstellen für das Spiel Dead Island Riptide...
Die Erste Option wäre da bei mir, das Geld ändern zu können.

bei meinen Beispiel:

+ 1.000 Money
- 1.000 Money

Funktionieren tuts eigentlich ganz gut, aber ein Problem habe ich dennoch Happy
Sobald das Spiel neu gestartet wird ändert sich die Prozess Id von der

"gamedll_x86_rwdi.dll"

Da aber mein Trainer über Pointer läuft, funktioniert dieser nicht mehr wenn das Spiel neu gestartet wird. Bei anderen Spielen war das nicht so, da ist immer die ID meistens gleich geblieben.

Was könnte ich tun das der Trainer troz id änderung funktionstüchtig bleibt ?




MfG.
Struppi
Suchen
Antworten
iNvIcTUs oRCuS Offline
Super Moderator
****
Beiträge: 2.688
Themen: 529
Registriert seit: Aug 2010
Bewertung: 19
#2
11.06.2013, 10:31 (Dieser Beitrag wurde zuletzt bearbeitet: 11.06.2013, 16:27 von iNvIcTUs oRCuS.)
Du scheinst da was durcheinander zu bringen... Die Prozess ID ist ja, wie der Name schon sagt, die ID (Identifikationsnummer) des bzw. eines Prozesses.
Und diese ID ist bei jedem Neustart eines Spiels oder einer Anwendung so gut wie immer eine andere...
Ich könnte mir jetzt eher vorstellen das du die Basisadresse meinst. Denn diese ist bei einem geladenen Modul ebenfalls so gut wie immer unterschiedlich. Es gibt zwar auch Ausnahmen aber das ist eher selten. Aber bei einer DLL kannst du in der Regel davon ausgehen das die Base Addy immer ne andere is. Bei diesem Spiel hab ich garnicht erst nach Pointern gesucht, weiß nich ob das ohne großen Aufwand möglich war. Ich bin direkt zur Code Injection übergegangen und hab das so realisiert das bei jedem öffnen des Menüs ein gewisser Betrag hinzuaddiert wird.

Es ist durchaus möglich das man bei diesem Spiel das mit Pointern lösen kann, hab ich bei anderen Spielen auch schon so gemacht. Aber du musst eben bedenken das du hier mittels Basisadresse + Offset hantieren musst anstatt auf absolut bezeichnete Adressen zurückzugreifen.
Das Spiel hab ich zwar momentan nicht mehr auf der Platte könnte das aber nochmal draufschmeisen und zumindest dann sagen ob du mittels Pointer so ohne weiteres zum Ziel kommst od. kommen kannst.

Für die Schreibweise in VB sind dann allerdings unsere Spezialisten gefragt.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!

Traineranfragen per PM werden prinzipiell gelöscht...

[Bild: signatur6akm7.gif]
Suchen
Antworten
DNA Offline
Administrator
*******
Beiträge: 1.330
Themen: 123
Registriert seit: May 2010
Bewertung: 26
#3
11.06.2013, 15:49
Wie silent schon schrieb, meinst du wohl die baseaddi vom Modul.
Diese kannst du allerdings ganz einfach mit VB auslesen und das Offset hinzu addieren.
In meinem Modul müsste auch die Funktion dafür zu finden sein.


Sent from my iPhone using Tapatalk 2
ACHTUNG: Lesen gefährdet die Dummheit

[Bild: dna-sig.gif]
Suchen
Antworten
Struppi Offline
Junior Member
**
Beiträge: 47
Themen: 12
Registriert seit: Apr 2012
Bewertung: 0
#4
11.06.2013, 16:59
Danke schonmal für die Antworten.
Das mit der Code Injection wäre auch eine möglichkeit, wenn ich das mal so hinkriegen würde Happy Dazu müsste ich mir mal bei Zeiten nochmal die Tuts anschauen und intensiver mal mit Code Injection beschäftigen.

Nur bei den Pointer wenn ich da nicht die Prozess ID von der dll mit reinpacke funktioniert das irgendwie nicht.

Der Code sieht so aus:

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'+1000 Geld.
        If GetAsyncKeyState(VK_NUMPAD1) Then
            GetProcessId(ProcName)

            Dim Geld As Int32
            Dim pointer1 As Int32
            Dim pointer2 As Int32

            pointer1 = Read_Long(&H6730000 + &HCC66C8)
            pointer2 = Read_Long(pointer1 + &H1C)
            Geld = Read_Long(pointer2 + &H790)

            Geld += 1000
            Write_Long(pointer2 + &H790, Geld)
        End If

        '-1000 Geld.
        If GetAsyncKeyState(VK_NUMPAD2) Then
            GetProcessId(ProcName)

            Dim Geld As Int32
            Dim pointer1 As Int32
            Dim pointer2 As Int32

            pointer1 = Read_Long(&H6730000 + &HCC66C8)
            pointer2 = Read_Long(pointer1 + &H1C)
            Geld = Read_Long(pointer2 + &H790)

            Geld -= 1000
            Write_Long(pointer2 + &H790, Geld)
        End If


anders wüsst ich jetzt nicht, wie man das mit Pointer machen kann.
Bei pointer1 die erste adresse wäre die id die sich ändert.

Suchen
Antworten
Bluespide Offline
Member
***
Beiträge: 96
Themen: 14
Registriert seit: Jun 2010
Bewertung: 0
#5
11.06.2013, 18:01

Code:
1
2
3
4
5
6
7
8
    Private Function getModulPtrByName(ByVal proc As Process, ByVal name As String) As IntPtr
        For i As Integer = 0 To proc.Modules.Count - 1
            If proc.Modules(i).ModuleName.Equals(name) Then
                Return proc.Modules(i).BaseAddress
            End If
        Next
        Throw New Exception("module not found")
    End Function

Suchen
Antworten
iNvIcTUs oRCuS Offline
Super Moderator
****
Beiträge: 2.688
Themen: 529
Registriert seit: Aug 2010
Bewertung: 19
#6
11.06.2013, 18:06
Ich weiß jetzt nicht wie dein Trainer im ganzen aufgebaut ist...
Meine Trainer funktionieren nach dem Maßstab das, nachdem der Trainer gestartet wurde, erstmal Ausschau nach dem jeweiligen Prozess gehalten wird.
Wenn der Trainer den Prozess, bzw. das Spiel, gefunden hat dann stehen auch sämtliche Daten die weiter nötig sind zur Verfügung.
Das heißt das ich z.B. in einer Variable die PID habe.

Das was du mit erste Adresse bei "pointer1" bezeichnest ist, wie wir schon sagten die Basisadresse + Offset. Da sich die Basisadresse ständig ändert ist auch diese erste Adresse immer anders...
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!

Traineranfragen per PM werden prinzipiell gelöscht...

[Bild: signatur6akm7.gif]
Suchen
Antworten
DNA Offline
Administrator
*******
Beiträge: 1.330
Themen: 123
Registriert seit: May 2010
Bewertung: 26
#7
12.06.2013, 00:38
Die getprocessid Funktion musst du drin lassen, allerdings verwechselst du da etwas.
Der Prozess besteht aus mehreren Modulen und diese Module haben nach jedem Neustart eine andere startadresse.
Mit der prozessid sagst du dem Trainer erstmal, um welchen Prozess es sich handelt ... nun musst du, um den Pointer richtig nutzen zu können, noch die startaddi vom Modul auslesen und das machst du mit der Funktion, die bluespide gepostet hat.

Um es auf den Punkt zu bringen... du kannst den Pointer nicht mit einer festen addi Auslesen.

[code=Vb] pointer1 = Read_Long(getmoduleptrbyname(dein_prozess, dein_modul) + &HCC66C8)[/code]



Sent from my iPhone using Tapatalk 2
ACHTUNG: Lesen gefährdet die Dummheit

[Bild: dna-sig.gif]
Suchen
Antworten
Struppi Offline
Junior Member
**
Beiträge: 47
Themen: 12
Registriert seit: Apr 2012
Bewertung: 0
#8
12.06.2013, 18:51
Funktioniert irgendwie nicht, oder ich mache wieder was falsch.

Code:
pointer1 = Read_Long(getModulPtrByName(ProcName, "gamedll_x86_rwdi.dll") + &HCC66C8)


Der Wert von Typ String kann nicht in System.Diagnostics.process konvertiert werden.

Suchen
Antworten
DNA Offline
Administrator
*******
Beiträge: 1.330
Themen: 123
Registriert seit: May 2010
Bewertung: 26
#9
12.06.2013, 22:04
In deiner Projektmappe habe ich gesehen, dass du mein GetModuleBase Funktion
drin hast.

Entweder versuchst du es so
[code=VB]pointer1 = Read_Long(GetModuleBase(ProcName, "gamedll_x86_rwdi.dll") + &HCC66C8)[/code]

Der von dir genannte Fehler tritt auf, weil du bei der Funktion von Bluespide einen
Prozess übergeben musst, allerdings übergibst du mit ProcName einen String.
Wenn du die Funktion von Bluespide nutzen möchtest, dann sollte das folgerndemaßen
funktionieren
[code=VB]pointer1 = Read_Long(getModulPtrByName(Process.GetProcessesByName(ProcName), "gamedll_x86_rwdi.dll") + &HCC66C8)[/code]
ACHTUNG: Lesen gefährdet die Dummheit

[Bild: dna-sig.gif]
Suchen
Antworten
Struppi Offline
Junior Member
**
Beiträge: 47
Themen: 12
Registriert seit: Apr 2012
Bewertung: 0
#10
14.06.2013, 22:00
Nun wolte ich ein Teleporter mit Laden / Speichern einbauen.
Ist ja soweit ganz gut denke ich, aber wenn ich das benutzen möchte tut sich da garnichts -.-
Der Speichert die Koords nicht in der CodeCave Adresse weder wenn ich eigene posis eintrage im trainer so das man nur Taste Xy drücken muss das man bei abc ist tut sich ebendfalls nix^^

Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
'Teleporter
        'Aktuelle Position speichern.
        If GetAsyncKeyState(VK_NUMPAD9) Then
            GetProcessId(ProcName)

            ' X Koord
            Dim pointer1 As Int32
            Dim pointer2 As Int32
            Dim pointer3 As Int32
            Dim pointer4 As Int32
            Dim pointer5 As Int32

            ' Y Koord
            Dim pointer6 As Int32
            Dim pointer7 As Int32
            Dim pointer8 As Int32
            Dim pointer9 As Int32
            Dim pointer10 As Int32

            ' Z Koord
            Dim pointer11 As Int32
            Dim pointer12 As Int32
            Dim pointer13 As Int32
            Dim pointer14 As Int32
            Dim pointer15 As Int32

            Telepointer = Read_Long(&H40AAB1)

            pointer1 = Read_Long(GetModuleBase(ProcName, "engine_x86_rwdi.dll") + &H5B6C44)
            pointer2 = Read_Long(pointer1 + &H588)
            pointer3 = Read_Long(pointer2 + &H170)
            pointer4 = Read_Long(pointer3 + &H0)
            pointer5 = Read_Long(pointer4 + &H7E8)

            'System.Threading.Thread.Sleep(500)
            TextBox1.Text = Read_Long(pointer5 + &H98)
            XKoord = Read_Long(Telepointer + pointer5 + &H98)

            pointer6 = Read_Long(GetModuleBase(ProcName, "engine_x86_rwdi.dll") + &H5B6C44)
            pointer7 = Read_Long(pointer6 + &H588)
            pointer8 = Read_Long(pointer7 + &H170)
            pointer9 = Read_Long(pointer8 + &H0)
            pointer10 = Read_Long(pointer9 + &H7E8)

            'System.Threading.Thread.Sleep(500)
            TextBox2.Text = Read_Long(pointer10 + &HA0)
            YKoord = Read_Long(Telepointer + pointer10 + &HA0)

            pointer11 = Read_Long(GetModuleBase(ProcName, "engine_x86_rwdi.dll") + &H5B6C44)
            pointer12 = Read_Long(pointer11 + &H588)
            pointer13 = Read_Long(pointer12 + &H170)
            pointer14 = Read_Long(pointer13 + &H0)
            pointer15 = Read_Long(pointer14 + &H348)

            'System.Threading.Thread.Sleep(500)
            TextBox3.Text = Read_Long(pointer15 + &H9C)
            ZKoord = Read_Long(Telepointer + pointer15 + &H9C)

            'Gespeicherte Position laden.
            If GetAsyncKeyState(VK_NUMPAD8) Then
                GetProcessId(ProcName)

                If XKoord <> 0 Then
                    Write_Long(Telepointer + pointer5 + &H98, XKoord)
                    Write_Long(Telepointer + pointer10 + &HA0, YKoord)
                    Write_Long(Telepointer + pointer15 + &H9C, ZKoord)
                    'System.Threading.Thread.Sleep(500)

                End If
            End If
        End If


Ich weiß da mal wieder nicht weiter.

Suchen
Antworten
Share Thread:            
Seiten (2): 1 2 Weiter »


  • Druckversion anzeigen
  • Thema abonnieren


Benutzer, die gerade dieses Thema anschauen:
1 Gast/Gäste

  • Kontakt
  • Forum team
  • Forum stats
  • Nach oben
 
  • RSS-Synchronisation
  • Lite mode
  • Home of Gamehacking - Archiv
  • Help
 
Forum software by © MyBB - Theme © iAndrew 2014



Linearer Modus
Baumstrukturmodus