23.05.2012, 22:04
Zuerst lädst du dir mal bitte das hier runter und fügst es in dein
Projekt ein
http://homeofgamehacking.de/showthread.p...ainermodul
Du kannst nicht einfach
[code=VB]munition = Read_Pointer(PID + &H174360, 0)[/code]
schreiben.
Die PID ist nicht die Base!
Die PID ist nur die ProzessID.
Wenn du das Trainermodul in dein Projekt eingefügt hast, dann öffnest
du das Modul und fügst folgendes ein:
[code=VB] Public Function GetModuleBase(ByVal ProcName As String, ByVal ModuleName As String)
Dim BaseAddress As Int32
For Each PM As ProcessModule In Process.GetProcessesByName(ProcName)(0).Modules
If ModuleName.ToLower = PM.ModuleName.ToLower Then
BaseAddress = PM.BaseAddress
End If
Next
Return BaseAddress
End Function[/code]
Mit obiger Funktion kannst du die Base auslesen.
Der Aufruf sieht so aus
[code=VB]Dim base as int32 = GetModuleBase("ProzessName", "Modulname.dll")[/code]
Der Prozessname wird ohne die Endung .exe geschrieben, beim Modulnamen hingegen kommt
die Erweiterung dran. Es kann dabei natürlich auch sein, dass der Modulname gleich dem Prozessnamen ist,
dann würde das z.B. so aussehen
[code=VB]Dim base as int32 = GetModuleBase("MoorhuhnRemake", "MoorhuhnRemake.exe")[/code]
Bei einer DLL hingegen so
[code=VB]Dim base as int32 = GetModuleBase("MoorhuhnRemake", "Game_x86.dll")[/code]
(Sind alles nur Beispiele, da ich nicht weiß, wie es bei Moorhuhn ist)
In deinem code steht
[code=VB] munition = Read_Pointer(PID + &H174360, 0)
munition += 8
Write_Pointer(munition, PID + &HBAFA8, 0)
[/code]
Da hast du wohl noch das Offset von Solitär drin (BAFA8)
Wenn du das mit den Pointern richtig ausgelesen hast, dann müsste das hier bei dir
funktionieren.
[code=VB]
Public Class Form1
Private Const ProcessName = "MoorhuhnRemake"
dim base as int32
dim munition as int32
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
base = GetModuleBase(ProcessName, "MoorhuhnRemake.exe") 'Modulname muss angepasst werden
Do
munition = Read_Pointer(base+ &H174360, 0)
munition = 8 'Kein += 8, sonst würde deine Schleife immer wieder 8 addieren
Write_Pointer(munition, base+ &H174360, 0)
Loop
End Sub
End Class
[/code]
Von solchen Schleifen im Trainer würde ich allerdings abraten ... aber zum
testen ist es ok.
Projekt ein
http://homeofgamehacking.de/showthread.p...ainermodul
Du kannst nicht einfach
[code=VB]munition = Read_Pointer(PID + &H174360, 0)[/code]
schreiben.
Die PID ist nicht die Base!
Die PID ist nur die ProzessID.
Wenn du das Trainermodul in dein Projekt eingefügt hast, dann öffnest
du das Modul und fügst folgendes ein:
[code=VB] Public Function GetModuleBase(ByVal ProcName As String, ByVal ModuleName As String)
Dim BaseAddress As Int32
For Each PM As ProcessModule In Process.GetProcessesByName(ProcName)(0).Modules
If ModuleName.ToLower = PM.ModuleName.ToLower Then
BaseAddress = PM.BaseAddress
End If
Next
Return BaseAddress
End Function[/code]
Mit obiger Funktion kannst du die Base auslesen.
Der Aufruf sieht so aus
[code=VB]Dim base as int32 = GetModuleBase("ProzessName", "Modulname.dll")[/code]
Der Prozessname wird ohne die Endung .exe geschrieben, beim Modulnamen hingegen kommt
die Erweiterung dran. Es kann dabei natürlich auch sein, dass der Modulname gleich dem Prozessnamen ist,
dann würde das z.B. so aussehen
[code=VB]Dim base as int32 = GetModuleBase("MoorhuhnRemake", "MoorhuhnRemake.exe")[/code]
Bei einer DLL hingegen so
[code=VB]Dim base as int32 = GetModuleBase("MoorhuhnRemake", "Game_x86.dll")[/code]
(Sind alles nur Beispiele, da ich nicht weiß, wie es bei Moorhuhn ist)
In deinem code steht
[code=VB] munition = Read_Pointer(PID + &H174360, 0)
munition += 8
Write_Pointer(munition, PID + &HBAFA8, 0)
[/code]
Da hast du wohl noch das Offset von Solitär drin (BAFA8)
Wenn du das mit den Pointern richtig ausgelesen hast, dann müsste das hier bei dir
funktionieren.
[code=VB]
Public Class Form1
Private Const ProcessName = "MoorhuhnRemake"
dim base as int32
dim munition as int32
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
base = GetModuleBase(ProcessName, "MoorhuhnRemake.exe") 'Modulname muss angepasst werden
Do
munition = Read_Pointer(base+ &H174360, 0)
munition = 8 'Kein += 8, sonst würde deine Schleife immer wieder 8 addieren
Write_Pointer(munition, base+ &H174360, 0)
Loop
End Sub
End Class
[/code]
Von solchen Schleifen im Trainer würde ich allerdings abraten ... aber zum
testen ist es ok.
ACHTUNG: Lesen gefährdet die Dummheit