Register for your free account! | Forgot your password?

Go Back   elitepvpers › Coders Den › General Coding › Coding Tutorials
You last visited: Today at 14:44

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Simples Gamehacking via Memoryediting

Discussion on Simples Gamehacking via Memoryediting within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #46
 
elite*gold: 0
Join Date: Jan 2011
Posts: 387
Received Thanks: 139
SUper Tut gleich mal ausprobieren
Яonix is offline  
Old   #47
 
KennyJumpen's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 45
Received Thanks: 1
Super Tutorial
Ich finds ehrlich gesagt gut, dass dort Fehler drin sind.
Ich mein.. GRUNDLAGEN SOLLTE MAN SCHON BEHERRSCHEN BEVOR MAN SICH MIT MEMORY EDITING BEFASST!

Win7 64 Bit klappt hervorragend!
KennyJumpen is offline  
Old   #48


 
Ajax1337's Avatar
 
elite*gold: 52
Join Date: Apr 2010
Posts: 488
Received Thanks: 100
nice tut
Ajax1337 is offline  
Old   #49
 
.Scare™'s Avatar
 
elite*gold: 66
Join Date: Jan 2012
Posts: 234
Received Thanks: 145
hey @ all,

gerade für den Anfang, sry für das aufwühlen von dem Alten post!!

echt ein supi tut, nur aus irgent einem grund geht es bei mir nicht. ich bekomme keinen Fehler aber z.b. ich mache es zum testen mit Solitaire und da werden die punkte nicht angenommen.


mein fehler, ich habe nur die adresse ausgelesen, nicht den Base Pointer.

was mich aber interesieren würde, gibt es ein gutes tut dafür? den den basepointer zu finden ist nicht so leicht, da ich bei Solitär 3 pointer habe die zur gleichen addrese gehen und auch gleich oft, immer wen sich der punktestand ändert.

mfg
.Scare™ is offline  
Old   #50
 
mördan1337's Avatar
 
elite*gold: 100
The Black Market: 125/0/0
Join Date: Jan 2013
Posts: 481
Received Thanks: 51
Quote:
Originally Posted by LemoniscooL View Post
Hi!

@Shishidump mach es so:
Code:
Dim BaseAdress As Integer = &H105F1A58
Dim Offset As Integer = &HFC46C
Label2.Text = ReadLongPointer(Prozess1, BaseAdress, Offset, 255)
so funktionierts bei mir..

greetz
Hallo,

ich versuche gerade den Geldstand eines Spiels mit Mi4uric3s Tutorial zu ändern (Windows 7, 32bit).
Nachdem ich das Spiel gestartet hatte, las ich die Adresse mit Cheat Engine aus und alles funktionierte einwandfrei.

Da sich die Adresse beim Spielneustart ändert, wollte ich im nächsten Schritt Pointer verwenden.
Ich erhielt:

"RPG_RT.exe"+0009DBE8 -> 066EC900
066EC900 + 1C = 066EC91C

Dabei ist "066EC91C" meine endgültige, temporäre aber dynamische Adresse und "1C" der Offset.
Wenn ich es richtig verstanden habe, ist die Baseadress "066EC900", die jedoch auch dynamisch ist. Das liegt daran, dass die Adresse von "RPG_RT.exe" bei jedem Spielstart anders ist.

Meine Frage lautet nun im Bezug zum Tutorial:
Statt "ReadLong" benutze ich "ReadLongPointer" und statt "Writememory" "WriteLongPointer". Meine Schwierigkeit besteht nun darin, ein Argument für "BaseAdress" zu übergeben, da dieses, wie beschrieben, dynamisch ist.
Wie kann ich bei Benutzung dieses Programmes die Adresse des "RPG_RT.exe"-Prozesses auslesen, damit ich diese in Form der Baseadress korrekt übergeben kann?
mördan1337 is offline  
Old   #51
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
Das Tutorial ist total behindert ich muss das dringend überarbeiten.
2009 hatte ich halt noch nicht wirklich viel Verständnis davon..

€dit: So habs mal überarbeitet, bitte gebt mir mal Rückmeldung dazu.
Mi4uric3 is offline  
Thanks
1 User
Old   #52
 
-Soni©-'s Avatar
 
elite*gold: 7
Join Date: Sep 2012
Posts: 933
Received Thanks: 93
TuT ist echt Super! Komme nach einigen malen durchlesen recht gut mit klar, doch habe ich i.wie ein Problem mit der Anwendung, bzw. werd ich nicht ganz draus schlau, was ich in die Anwendung schreiben soll.. Die NativeMethods hab ich fertig, alles so wie auf dem Screenshot, aber nett wäre vlt gewesen wenn du noch n Screen zu der Anwendung machst :/

Könnte das mal jemand übernehmen, also nen Screenshot von der(/dem) Anwendung(s-Code) machen ? Fänd ich sehr hilfreich :P

Sry fürs Pushen aber des würde mich sehr Interessieren
-Soni©- is offline  
Old   #53
 
ramijafary1's Avatar
 
elite*gold: 60
Join Date: Aug 2012
Posts: 227
Received Thanks: 79
Nice
but can anyone make a English tutorial Q,Q"
ramijafary1 is offline  
Old   #54
 
L!ghtning's Avatar
 
elite*gold: 0
Join Date: Sep 2013
Posts: 3
Received Thanks: 1
gutes tutorial aber warum nicht einfach in C++ in ner .dll
wäre:

1. leichter
2. du kannst directx benutzen (etc.)
3. Du kannst wenn das game einen hackschutz besitzt einen hook coden der deinen hack undetected macht
4. du kannst einen bypass schreiben
5. alle funktionen sind schon vorhanden wie writeprocessmemory, openprocess (etc.)

L!ghtning is offline  
Thanks
1 User
Old   #55
 
davydavekk's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 101
Received Thanks: 42
Good tutorial

But how do we do if we have to deal with multi-level pointers ?
davydavekk is offline  
Old   #56
 
-Soni©-'s Avatar
 
elite*gold: 7
Join Date: Sep 2012
Posts: 933
Received Thanks: 93
Quote:
Originally Posted by L!ghtning View Post
gutes tutorial aber warum nicht einfach in C++ in ner .dll
wäre:

1. leichter
2. du kannst directx benutzen (etc.)
3. Du kannst wenn das game einen hackschutz besitzt einen hook coden der deinen hack undetected macht
4. du kannst einen bypass schreiben
5. alle funktionen sind schon vorhanden wie writeprocessmemory, openprocess (etc.)

Du könntest ja mal ein TuT machen, wo diese Punkte ausführlich erklärt werden
-Soni©- is offline  
Old   #57
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
Quote:
Originally Posted by L!ghtning View Post
gutes tutorial aber warum nicht einfach in C++ in ner .dll
wäre:

1. leichter
2. du kannst directx benutzen (etc.)
3. Du kannst wenn das game einen hackschutz besitzt einen hook coden der deinen hack undetected macht
4. du kannst einen bypass schreiben
5. alle funktionen sind schon vorhanden wie writeprocessmemory, openprocess (etc.)

Wo ist der Sinn? Das hier ist ein VB.Net Tutorial, kein C++ Tutorial.

Quote:
Originally Posted by davydavekk View Post
Good tutorial

But how do we do if we have to deal with multi-level pointers ?
I made an example for that in the 1st post:
PHP Code:
Dim MyFloat As Single = 0
Dim PointerValue 
As Integer = 0
NativeMethods
.ReadInteger(&H401234, PointerValue)
If 
PointerValue > 0 Then NativeMethods.ReadInteger(PointerValue + &H1234, PointerValue)
If 
PointerValue > 0 Then NativeMethods.ReadSingle(PointerValue, MyFloat) 
Mi4uric3 is offline  
Old   #58

 
Sergeant Wasabi's Avatar
 
elite*gold: 2
Join Date: Nov 2012
Posts: 148
Received Thanks: 17
Huhu,

Ich weiß das Tutorial ist ein wenig älter, ich habe aber ein Problem mit dem Code.
Ich kriege bei dieser Zeile immer einen StackOverflow

PHP Code:
NativeMethods.ProcessHandle = NativeMethods.OpenProcess(NativeMethods.OpenProcess(&H1F0FFF, False, pid)) 
Mein gesamter Code
PHP Code:
Imports System.Runtime.InteropServices

Public Class Form1

    
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        
If NativeMethods.OpenProcess(Process.GetProcessesByName("csgo")(0).Id) = True Then ' .exe weglassen, falls der (Spiele-)Prozess auf .exe endet. ' 
            
Label2.ForeColor = Color.Green
            Label2
.Text = "Injected"

            
Dim MyFloat As Single = 0
            Dim PointerValue 
As Integer = 0
            NativeMethods
.ReadInteger(&H401234, PointerValue)
            If 
PointerValue > 0 Then NativeMethods.ReadInteger(PointerValue + &H1234, PointerValue)
            If 
PointerValue > 0 Then NativeMethods.ReadSingle(PointerValue, MyFloat)

            
Label4.Text = MyFloat
        
Else
            
Label2.ForeColor = Color.Red
            Label2
.Text = "Fail!"
        
End If
    
End Sub
End 
Class

Public Class 
NativeMethods

    
<DllImport("kernel32.dll", SetLastError:=True)> _
    
Public Shared Function OpenProcess(ByVal DesiredAccess As Integer, ByVal InheritHandle As Boolean, ByVal ProcessID As Integer) As IntPtr
    End 
Function
    <
DllImport("kernel32.dll", SetLastError:=True)> _
    
Private Shared Function CloseHandle(ByVal Handle As IntPtr) As Boolean
    End 
Function
    <
DllImport("kernel32.dll", SetLastError:=True)> _
    
Private Shared Function ReadProcessMemory(ByVal ProcessHandle As IntPtr, ByVal Address As IntPtr, ByRef Buffer As Byte(), ByVal Size As Integer, ByRef NumberOfBytesRead As Integer) As Boolean
    End 
Function
    <
DllImport("kernel32.dll", SetLastError:=True)> _
    
Private Shared Function WriteProcessMemory(ByVal ProcessHandle As IntPtr, ByVal Address As IntPtr, ByVal Buffer As Byte(), ByVal Size As Integer, ByRef NumberOfBytesWritten As Integer) As Boolean
    End 
Function

    Private 
Shared ProcessHandle As IntPtr = IntPtr.Zero

    Friend Shared 
Function OpenProcess(ByVal pid As Integer) As Boolean
        NativeMethods
.ProcessHandle = NativeMethods.OpenProcess(NativeMethods.OpenProcess(&H1F0FFF, False, pid))
        Return 
IIf(NativeMethods.ProcessHandle = IntPtr.Zero, False, True)
    
End Function

    
Friend Shared Function CloseHandle()
        If 
NativeMethods.ProcessHandle = IntPtr.Zero Then Return False
        
Return NativeMethods.CloseHandle(NativeMethods.ProcessHandle)
    
End Function

    
Friend Shared Function ReadArray(ByVal Address As IntPtr, ByRef Buffer As Byte(), ByVal Size As Integer) As Boolean ' CE: Array of Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        
Return NativeMethods.ReadProcessMemory(ProcessHandle, Address, Buffer, Size, 0)
    
End Function

    
Friend Shared Function ReadByte(ByVal Address As IntPtr, ByRef Buffer As Byte) As Boolean ' CE: 1 Byte ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 1, 0)
        If 
ret = True Then Buffer = tBuffer(0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadShort(ByVal Address As IntPtr, ByRef Buffer As Short) As Boolean ' CE: 2 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0, 0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 2, 0)
        If 
ret = True Then Buffer = BitConverter.ToInt16(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadInteger(ByVal Address As IntPtr, ByRef Buffer As Integer) As Boolean ' CE: 4 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0, 0, 0, 0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 4, 0)
        If 
ret = True Then Buffer = BitConverter.ToInt32(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadLong(ByVal Address As IntPtr, ByRef Buffer As Long) As Boolean ' CE: 8 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0, 0, 0, 0, 0, 0, 0, 0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 8, 0)
        If 
ret = True Then Buffer = BitConverter.ToInt64(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadSingle(ByVal Address As IntPtr, ByRef Buffer As Single) As Boolean ' CE: Float ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0, 0, 0, 0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 8, 0)
        If 
ret = True Then Buffer = BitConverter.ToSingle(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadDouble(ByVal Address As IntPtr, ByRef Buffer As Double) As Boolean ' CE: Double ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {0, 0, 0, 0, 0, 0, 0, 0}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 8, 0)
        If 
ret = True Then Buffer = BitConverter.ToDouble(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadString(ByVal Address As IntPtr, ByRef Buffer As String, ByVal Length As Integer) As Boolean ' String mit bekannter Länge, schnell ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {}
        
Dim ret As Boolean = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, Length, 0)
        If 
ret = True Then Buffer = BitConverter.ToString(tBuffer, 0)
        Return 
ret
    End 
Function

    
Friend Shared Function ReadString(ByVal Address As IntPtr, ByRef Buffer As String) As Boolean ' String mit unbekannter Länge, braucht länger ' 
        
If ProcessHandle = IntPtr.Zero Then Return False
        Dim tBuffer 
As Byte() = {}
        
Dim ret As Boolean = False
        
Do
            
ret = NativeMethods.ReadProcessMemory(ProcessHandle, Address, tBuffer, 1, 0)
            If 
ret = True Then If tBuffer(0) <> 0 Then Buffer &= BitConverter.ToString(tBuffer, 0)
        
Loop While tBuffer(0) <> 0
        
Return ret
    End 
Function

    
Friend Shared Sub WriteArray(ByVal Address As IntPtr, ByVal Buffer As Byte()) ' CE: Array of Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        WriteProcessMemory
(ProcessHandle, Address, Buffer, Buffer.Length, 0)
    
End Sub

    Friend Shared Sub WriteByte
(ByVal Address As IntPtr, ByVal Buffer As Byte) ' CE: 1 Byte ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 1, 0)
    
End Sub

    Friend Shared Sub WriteShort
(ByVal Address As IntPtr, ByVal Buffer As Short) ' CE: 2 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 2, 0)
    
End Sub

    Friend Shared Sub WriteInteger
(ByVal Address As IntPtr, ByVal Buffer As Integer) ' CE: 4 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 4, 0)
    
End Sub

    Friend Shared Sub WriteLong
(ByVal Address As IntPtr, ByVal Buffer As Long) ' CE: 8 Bytes ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 8, 0)
    
End Sub

    Friend Shared Sub WriteSingle
(ByVal Address As IntPtr, ByVal Buffer As Single) ' CE: Float ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 4, 0)
    
End Sub

    Friend Shared Sub WriteDouble
(ByVal Address As IntPtr, ByVal Buffer As Double) ' CE: Double ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = BitConverter.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, 8, 0)
    
End Sub

    Friend Shared Sub WriteString
(ByVal Address As IntPtr, ByVal Buffer As String) ' CE: String ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = System.Text.Encoding.ASCII.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, Buffer.Length, 0)
    
End Sub

    Friend Shared Sub WriteUnicodeString
(ByVal Address As IntPtr, ByVal Buffer As String) ' CE: Unicode String ' 
        
If ProcessHandle = IntPtr.Zero Then Exit Sub
        Dim tBuffer 
As Byte() = System.Text.Encoding.Unicode.GetBytes(Buffer)
        
WriteProcessMemory(ProcessHandle, Address, tBuffer, Buffer.Length * 2, 0)
    
End Sub

End 
Class 
Sergeant Wasabi is offline  
Old   #59
 
Mi4uric3's Avatar
 
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
Quote:
Originally Posted by Sergeant Wasabi View Post
Huhu,

Ich weiß das Tutorial ist ein wenig älter, ich habe aber ein Problem mit dem Code.
Ich kriege bei dieser Zeile immer einen StackOverflow

PHP Code:
NativeMethods.ProcessHandle = NativeMethods.OpenProcess(NativeMethods.OpenProcess(&H1F0FFF, False, pid)) 
Das ist ja auch völliger Unfug was du da tust.
Zuerst rufst du die Funktion
PHP Code:
Friend Shared Function OpenProcess(ByVal pid As Integer) As Boolean 
mit deinem Code:
Code:
If NativeMethods.OpenProcess(Process.GetProcessesByName("csgo")(0).Id) = True Then
auf.
Diese ruft intern sich selbst auf
PHP Code:
NativeMethods.OpenProcess(RichtigeOpenProcessFunktion(DesiredAccess, InheritHandle, ProcessId) 
Da sie sich immer und immer wieder selbst aufruft kommt es dann natürlich zu einem Stack Overflow.
Mi4uric3 is offline  
Old   #60

 
Sergeant Wasabi's Avatar
 
elite*gold: 2
Join Date: Nov 2012
Posts: 148
Received Thanks: 17
Na ja, so stands halt im Tutorial. Da ging ich von aus das das so stimmt. Wie mach ichs richtig?
Sergeant Wasabi is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[VB 2010] Memoryediting Lib
04/06/2013 - .NET Languages - 5 Replies
Hey, Kennt ihr ne DLL mit der man leichte in den Arbeitsspeicher schreiben kann, wie bei AutoIt? MfG
[FRAGE]VB Memoryediting mit Pointern
12/05/2011 - .NET Languages - 1 Replies
Hallo Elitepvpers-Community, ich habe mich heute mal mit Memoryediting in VB beschäftigt und bin auf dieses interessante Modul gestoßen: Module ReadWritingMemory Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer Private Declare Function WriteProcessMemory1 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef...
[VB10] gamehacking via MemoryEditing (cheat Engine)
05/08/2011 - .NET Languages - 13 Replies
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...
[METIN2] Problem beim Memoryediting (Movespeed)
06/24/2010 - AutoIt - 27 Replies
Tag! Ich bin gerade dabei einfach einen Movespeedhack für Metin2 zu scripten, bis jetzt sieht das ganze so aus: #RequireAdmin #include <NomadMemory.au3> SetPrivilege("SeDebugPrivilege", 1) $ProcessID = ProcessExists("METIN2") $Open = _memoryopen($ProcessID)



All times are GMT +1. The time now is 14:44.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.