[VB10] gamehacking via MemoryEditing (cheat Engine)
hey com
ich habe ein tut hier im forum befolgt, wie man einfache vorteile im spiel erreichen kann wenn man adressen im Spiel mit Cheat Engine ändert
(z.B. unl. ammo)
Das konnte ich auch von meinem VB10 gecodeten Tool aus ändern, die Memory/Adressen Werte.
das sich jedoch die adressen bei jedem neustart des spiels ändern, wollte ich fragen:
ob man nicht gezielte adressen nehmen kann, die auch nach einem neustart des spiels gleich bleiben ( ohne Pointer ?, ich check das nicht mit dem pointer..)
PS: das spielt heist AssaultCube , richtig oldSkool
Ich glaub du musst den Pointer finden (wenn nicht, dann sry für die Aussage)..schau dir einfach mal ein paar mehr Tutorials zum Finden des Pointers an, gibt genügend in Google.
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim p As Process() = Process.GetProcessesByName("cube")
Try
If Not p.Length = 0 Then ' ShotGun
Memory.Writememory(p(0), "[COLOR="Red"]&H01E71E94[/COLOR]", "[COLOR="Purple"]999[/COLOR]", "4")
Else
End If
Catch ex As Exception
End Try
das in Rot das ist die die adresse die ich ändern deren wer bearbeiten will, und die sich immer ändert.
das in Lila ist der wert
meine ponter adresse lautet: 01E71E08
nur zeigt er mir unter der pointer adresse, gleich 2 ! eine normal und eine in grüne schrift
edit: ich habe das spiel gewechelt auf CubePortable
quasi:
ich will über meinen gecodeten tool, über den Pointer die aktuelle adresse finden und den wert bearbeiten ?!
Grün bedeutet normal, dass sich die Adresse nicht ändert...
Leider bringt dein geposteter Code nichts, da wir nicht wissen wie die "Writememory"-Funktion aussieht..
Ich kann mich noch erinnern, sowas ähnliches auch mal gemacht zu haben, jedenfalls nur Werte aus einem Online-Spiel ausgelesen (ReadProcessMemory-API), nicht verändert und da war es so, dass man an den Wert kommt, indem man den Pointer mit dem Offset addiert...
Hallo,
hab das mal mit dem Windows-Spiel SpiderSolitär versucht und da klappt es bei mir..
PHP Code:
Imports System.Runtime.InteropServices
Public Class Form1 <DllImport("kernel32.dll")> _ Private Shared Function OpenProcess(ByVal dwDesiredAccess As UInt32, ByVal bInheritHandle As Boolean, ByVal dwProcessId As UInt32) As IntPtr End Function
Private Declare Function WriteProcessMemory Lib "kernel32.dll" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load //Prozess des Spiels finden Dim gameProc As Process = Process.GetProcessesByName("SpiderSolitaire")(0) //Handle finden Dim gameHandle As IntPtr = OpenProcess(&H1F0FF, False, CUInt(gameProc.Id)) //Wert in die Adresse 0x879E9C schreiben WriteProcessMemory(CInt(gameHandle), &H879E9C, &H35, 1, Nothing) End Sub End Class
Den Wert &H879E9C musst du jedoch jedes mal neu suchen und ersetzen, oder du findest den Pointer und das Offset für den Wert, dann klappt das immer. In dem Beispiel wird der Wert &H35= 53 (um die Zahl in einen Hexwert zu wandeln kannst du diese Seite benutzen trägst dann z.B. bei Integer 53 ein und als Hexwert bekommst du dann 35, in VB.NET also &H35) genommen und bei "Züge" reingeschrieben.
Das würde nichts bringen, denn ich hab bereits den gesamten Code gepostet..
Hast du denn die Adresse geändert? Ich zeig dir mal kurz, wie ich das bei Spider-Solitär gemacht habe:
Unten siehst du ja die zwei Werte Spielstand: 500 und Spielzüge: 0 (am Anfang).
Dann machst du halt einen Zug, startest CheatEngine, wählst SpiderSolitaire.exe aus und gibst "1" bei Value ein und drückst auf First Scan. So, danach nochmal einen Zug machen, "2" eingeben und auf Next Scan. Wenn da noch einige Werte sind, dann das gleiche nochmal. Irgendwann bleibt noch eine Adresse übrig, bei mir ist es diesmal 004A9E9C und in VB.NET schreibst du dann also &H4A9E9C. Führ dann den Code mit WriteProcessMemory(...) aus. Ich habe z.B. 8 Züge. Nachdem ich meinen Code ausgeführt habe (wo ich den Wert z.B. auf 53 (= &H35) setzen will) passiert erstmal nichts, erst wenn ich meinen nächsten Zug mache, sehe ich meinen Wert, aber warum das so ist, keine Ahnung..
Naja das wars, jedoch musst du so jedesmal, wenn du das Spiel startest diese Adresse suchen, oder du findest den Pointer und das Offset, dann wird aus der Zeile:
So müsstest du nicht jedesmal die Adresse suchen..
Achja, bei Online Spielen wird sowas in den meisten Fällen nicht funktionieren, also es wird dann z.B. 9999999 HP angezeigt, aber wenn du in Wirklichheit nur 100 hast und jemand klatscht dir mit 500 eine bist du auch tot.
[VB.NET] Simples Gamehacking via Memoryediting 06/02/2015 - Coding Tutorials - 64 Replies Vorwort:
In diesem Tutorial wird erklärt, wie mit VB.Net auf den Arbeitsspeicher eines (Spiele-)Prozesses zugegriffen und dieser modifiziert werden kann.
Dabei werde ich keinen kompletten Sourcecode zur Verfügung stellen, da ich möchte, dass hier was gelernt wird. Kopieren kann schon jeder, dafür muss ich mir für das Tutorial keine Mühe geben.
Basics:
Microsoft stellt elementare Systemfunktionen bereit, die es einem ermöglichen, auf den Arbeitsspeicher des (Spiele-)Prozesses zuzugreifen....