[VB10] gamehacking via MemoryEditing (cheat Engine)

05/04/2011 23:27 crackMagic#1
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

vielen dank schon mal für kommentare :)
05/05/2011 14:26 Kraizy​#2
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.
05/05/2011 15:58 crackMagic#3
das mit dem pointer hab ich jetzt drauf, aber von meinem VB10 tool kann ich sie nicht ändern..
05/05/2011 15:59 Kraizy​#4
Wie meinst du ändern? Den Wert? Zeig mal wie du das machst.
05/05/2011 16:44 crackMagic#5
Code:
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 ?! :)
05/05/2011 19:49 Kraizy​#6
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...
05/05/2011 22:25 crackMagic#7
sry, aber ich bin zwischen fortgeschritten und mehr anfänger, ich kann mit diesen begriffen etwas wenig anfangen

hier ist mein projekt bis jetzt, vllt kannst du was damit anfangen oder auch nicht :P

[Only registered and activated users can see links. Click Here To Register...]
05/06/2011 19:09 Mbcool#8
Das Thema wäre auch für mich Interessant, da ich finde das VB.net für das Gamehacking reicht, und auch mächtiger ist als die meisten denken... :)
05/06/2011 21:33 Kraizy​#9
Werde mir das mal morgen anschauen, aber ich kann nicht versprechen, dass ich eine passende Lösung finde, hab das vor einem Jahr oder so gemacht..^^
05/07/2011 00:07 crackMagic#10
wenn du's versuchst - kann man nur scheitern :)
wenn nicht - ist man schon gescheitert ;)

damits kein spamm ist :P

assaultCube, die neuste version stüuzr immer ab wenn CE neben bei aktiv ist

edit:
habe diesen link hier gefunden und hasb überflogen, und sah ein paar begriffe mit denen wir glaub weiter kommen[Only registered and activated users can see links. Click Here To Register...]
05/07/2011 12:33 Kraizy​#11
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 UInt32ByVal bInheritHandle As BooleanByVal dwProcessId As UInt32) As IntPtr
    End 
Function

    Private Declare Function 
WriteProcessMemory Lib "kernel32.dll" (ByVal hProcess As IntegerByVal lpBaseAddress As IntegerByRef lpBuffer As IntegerByVal nSize As IntegerByRef lpNumberOfBytesWritten As Integer) As Integer

    
Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgsHandles MyBase.Load
        
//Prozess des Spiels finden
        
Dim gameProc As Process Process.GetProcessesByName("SpiderSolitaire")(0)
        
//Handle finden
        
Dim gameHandle As IntPtr OpenProcess(&H1F0FFFalseCUInt(gameProc.Id))
        
//Wert in die Adresse 0x879E9C schreiben
        
WriteProcessMemory(CInt(gameHandle), &H879E9C, &H351Nothing)
    
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 [Only registered and activated users can see links. Click Here To Register...] 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.
05/07/2011 22:50 crackMagic#12
werde es mal in angriff nehmen ..

EDIT:
also habe es mit dem normalem solitär probiert und da gings nicht ..

könntest du nicht vllt. deine mappe hochladen ? :)

LG
05/08/2011 10:44 Kraizy​#13
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:
PHP Code:
WriteProcessMemory(CInt(gameHandle), &H4A9E9C, &H351Nothing
Sowas:
PHP Code:
WriteProcessMemory(CInt(gameHandle), Pointer Offset, &H351Nothing
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.
05/08/2011 16:44 crackMagic#14
ich gebs auf, danke für die hilfe :)