|
You last visited: Today at 15:36
Advertisement
Simples Gamehacking via Memoryediting
Discussion on Simples Gamehacking via Memoryediting within the Coding Tutorials forum part of the General Coding category.
02/08/2012, 16:32
|
#46
|
elite*gold: 0
Join Date: Jan 2011
Posts: 387
Received Thanks: 139
|
SUper Tut gleich mal ausprobieren
|
|
|
02/12/2012, 13:55
|
#47
|
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!
|
|
|
02/12/2012, 15:37
|
#48
|
elite*gold: 52
Join Date: Apr 2010
Posts: 482
Received Thanks: 100
|
nice tut
|
|
|
06/01/2012, 18:45
|
#49
|
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
|
|
|
01/23/2013, 20:32
|
#50
|
elite*gold: 100
Join Date: Jan 2013
Posts: 481
Received Thanks: 51
|
Quote:
Originally Posted by LemoniscooL
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?
|
|
|
01/24/2013, 09:36
|
#51
|
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.
|
|
|
08/14/2013, 21:18
|
#52
|
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
|
|
|
09/02/2013, 19:17
|
#53
|
elite*gold: 60
Join Date: Aug 2012
Posts: 227
Received Thanks: 79
|
Nice
but can anyone make a English tutorial Q,Q"
|
|
|
09/08/2013, 16:30
|
#54
|
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.)
|
|
|
09/08/2013, 16:44
|
#55
|
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 ?
|
|
|
09/08/2013, 16:57
|
#56
|
elite*gold: 7
Join Date: Sep 2012
Posts: 933
Received Thanks: 93
|
Quote:
Originally Posted by L!ghtning
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
|
|
|
09/13/2013, 13:43
|
#57
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
|
Quote:
Originally Posted by L!ghtning
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
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)
|
|
|
03/03/2014, 13:49
|
#58
|
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
|
|
|
03/03/2014, 14:14
|
#59
|
elite*gold: 405
Join Date: Dec 2007
Posts: 6,615
Received Thanks: 6,358
|
Quote:
Originally Posted by Sergeant Wasabi
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.
|
|
|
03/03/2014, 14:15
|
#60
|
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?
|
|
|
 |
|
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 15:37.
|
|