Results 1 to 7 of 7
  1. #1
    sdhp442's Avatar
    Join Date
    Aug 2018
    Gender
    male
    Posts
    13
    Reputation
    10
    Thanks
    2

    Use ReadWriteMemory module for 64bit games [Paying]

    So i try to use a memory module to write a value to 64 bit game
    But i get this error:
    "vb.net constant expression not representable in type 'integer'"


    It works perfectly fine with 32 bit pointers such as ("&H200D288").
    all pointers & addresses in this game are like : "&H7FF69B809468"

    Here is the module:
    Code:
    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 lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function WriteProcessMemory2 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function WriteProcessMemory3 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
    
        Private Declare Function ReadProcessMemory1 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function ReadProcessMemory2 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function ReadProcessMemory3 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
    
        Const PROCESS_ALL_ACCESS = &H1F0FF
    
        Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteInteger(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Integer
                vBuffer = ReadInteger(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Single, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteFloat(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAFloat(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Single
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Single
                vBuffer = ReadFloat(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Value As Long, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteLong(Process, lvl, Value, nsize)
    
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMALong(ByVal Process As String, ByVal Address As Integer, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Long
    
            Try
                Dim lvl As Integer = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Long
                vBuffer = ReadLong(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As Long, ByVal NOPNum As Integer)
            On Error Resume Next
            Dim C As Integer
            Dim B As Integer
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            B = 0
            For C = 1 To NOPNum
                Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&)
                B = B + 1
            Next C
            Resume
        End Sub
    
        Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As Long, ByVal Value As String)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim C As Integer
            Dim B As Integer
            Dim D As Integer
            Dim V As Byte
    
            B = 0
            D = 1
            For C = 1 To Math.Round((Len(Value) / 2))
                V = Val("&H" & Mid$(Value, D, 2))
                Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&)
                B = B + 1
                D = D + 2
            Next C
            Resume
        End Sub
    
        Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Integer, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress, vBuffer As Integer
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Single, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim hAddress As Integer
            Dim vBuffer As Single
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Long, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As Integer
            Dim vBuffer As Long
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Integer
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress, vBuffer As Integer
            hAddress = Address
            ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Single
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
            Dim hAddress As Integer
            Dim vBuffer As Single
    
            hAddress = Address
            ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadLong(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Long
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As Integer
            Dim vBuffer As Long
    
            hAddress = Address
            ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    End Module
    The Button code to edit memory:
    Code:
    ReadWritingMemory.WriteDMAFloat("GAME", &H7FF69B809468, {&H1B0, &H148, &H8, &HB4}, TextBox1.Text, 4)
    Ready to pay 10$ for whoever fixing the whole code for me since i'm kinda newbie :P

  2. #2
    MikeRohsoft's Avatar
    Join Date
    May 2013
    Gender
    male
    Location
    Los Santos
    Posts
    797
    Reputation
    593
    Thanks
    26,314
    how it looks with, just make it working with UInt64?
    Code:
    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 IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function WriteProcessMemory2 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function WriteProcessMemory3 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
        Private Declare Function WriteProcessMemory4 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As UInt64, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As UInt64
    
        Private Declare Function ReadProcessMemory1 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function ReadProcessMemory2 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function ReadProcessMemory3 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
        Private Declare Function ReadProcessMemory4 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As UInt64, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As UInt64
    
        Const PROCESS_ALL_ACCESS = &H1F0FF
    
        Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteInteger(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Integer
                vBuffer = ReadInteger(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMAFloat(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Single, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteFloat(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAFloat(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Single
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Single
                vBuffer = ReadFloat(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMALong(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Long, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteLong(Process, lvl, Value, nsize)
    
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMALong(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Long
    
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Long
                vBuffer = ReadLong(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As UInt64, ByVal NOPNum As Integer)
            On Error Resume Next
            Dim C As Integer
            Dim B As Integer
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            B = 0
            For C = 1 To NOPNum
                Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&)
                B = B + 1
            Next C
            Resume
        End Sub
    
        Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As String)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim C As Integer
            Dim B As Integer
            Dim D As Integer
            Dim V As Byte
    
            B = 0
            D = 1
            For C = 1 To Math.Round((Len(Value) / 2))
                V = Val("&H" & Mid$(Value, D, 2))
                Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&)
                B = B + 1
                D = D + 2
            Next C
            Resume
        End Sub
    
        Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Integer, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As Integer
            Dim hAddress As UInt64
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteInt64(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Integer, Optional ByVal nsize As Integer = 8)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As UInt64
            Dim hAddress As UInt64
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory4(hProcess, hAddress, CInt(vBuffer), nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Single, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim hAddress As UInt64
            Dim vBuffer As Single
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Long, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As UInt64
            Dim vBuffer As Long
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Integer
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As Integer
            Dim hAddress As UInt64
            hAddress = Address
            ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
    
        Public Function ReadInt64(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As UInt64
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As UInt64
            Dim hAddress As UInt64
            hAddress = Address
            ReadProcessMemory4(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Single
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
            Dim hAddress As UInt64
            Dim vBuffer As Single
    
            hAddress = Address
            ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadLong(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Long
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As UInt64
            Dim vBuffer As Long
    
            hAddress = Address
            ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    End Module

  3. #3
    sdhp442's Avatar
    Join Date
    Aug 2018
    Gender
    male
    Posts
    13
    Reputation
    10
    Thanks
    2
    Quote Originally Posted by MikeRohsoft View Post
    how it looks with, just make it working with UInt64?
    Code:
    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 IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function WriteProcessMemory2 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function WriteProcessMemory3 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
        Private Declare Function WriteProcessMemory4 Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As UInt64, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As UInt64
    
        Private Declare Function ReadProcessMemory1 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
        Private Declare Function ReadProcessMemory2 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Single, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Single
        Private Declare Function ReadProcessMemory3 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As Long, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Long
        Private Declare Function ReadProcessMemory4 Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As UInt64, ByRef lpBuffer As UInt64, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As UInt64
    
        Const PROCESS_ALL_ACCESS = &H1F0FF
    
        Public Function WriteDMAInteger(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Integer, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteInteger(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAInteger(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Integer
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Integer
                vBuffer = ReadInteger(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMAFloat(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Single, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteFloat(Process, lvl, Value, nsize)
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMAFloat(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Single
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Single
                vBuffer = ReadFloat(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Function WriteDMALong(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Value As Long, ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Boolean
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                WriteLong(Process, lvl, Value, nsize)
    
                Return True
            Catch ex As Exception
                Return False
            End Try
        End Function
    
        Public Function ReadDMALong(ByVal Process As String, ByVal Address As UInt64, ByVal Offsets As Integer(), ByVal Level As Integer, Optional ByVal nsize As Integer = 4) As Long
    
            Try
                Dim lvl As UInt64 = Address
                For i As Integer = 1 To Level
                    lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
                Next
                Dim vBuffer As Long
                vBuffer = ReadLong(Process, lvl, nsize)
                Return vBuffer
            Catch ex As Exception
    
            End Try
        End Function
    
        Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As UInt64, ByVal NOPNum As Integer)
            On Error Resume Next
            Dim C As Integer
            Dim B As Integer
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            B = 0
            For C = 1 To NOPNum
                Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&)
                B = B + 1
            Next C
            Resume
        End Sub
    
        Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As String)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim C As Integer
            Dim B As Integer
            Dim D As Integer
            Dim V As Byte
    
            B = 0
            D = 1
            For C = 1 To Math.Round((Len(Value) / 2))
                V = Val("&H" & Mid$(Value, D, 2))
                Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&)
                B = B + 1
                D = D + 2
            Next C
            Resume
        End Sub
    
        Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Integer, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As Integer
            Dim hAddress As UInt64
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteInt64(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Integer, Optional ByVal nsize As Integer = 8)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As UInt64
            Dim hAddress As UInt64
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory4(hProcess, hAddress, CInt(vBuffer), nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Single, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
    
            Dim hAddress As UInt64
            Dim vBuffer As Single
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As UInt64, ByVal Value As Long, Optional ByVal nsize As Integer = 4)
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As UInt64
            Dim vBuffer As Long
    
            hAddress = Address
            vBuffer = Value
            WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Resume
        End Sub
    
        Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Integer
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As Integer
            Dim hAddress As UInt64
            hAddress = Address
            ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
    
        Public Function ReadInt64(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As UInt64
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim vBuffer As UInt64
            Dim hAddress As UInt64
            hAddress = Address
            ReadProcessMemory4(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Single
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
            Dim hAddress As UInt64
            Dim vBuffer As Single
    
            hAddress = Address
            ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    
        Public Function ReadLong(ByVal ProcessName As String, ByVal Address As UInt64, Optional ByVal nsize As Integer = 4) As Long
            On Error Resume Next
            If ProcessName.EndsWith(".exe") Then
                ProcessName = ProcessName.Replace(".exe", "")
            End If
            Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
            Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    
            Dim hAddress As UInt64
            Dim vBuffer As Long
    
            hAddress = Address
            ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
            Return vBuffer
            Resume
        End Function
    End Module
    I get this error while trying using the button:

  4. #4
    RoPMadM's Avatar
    Join Date
    Jul 2013
    Gender
    male
    Location
    __asm
    Posts
    226
    Reputation
    12
    Thanks
    251
    My Mood
    Cynical
    Are you running with the highest privileges?

  5. #5
    sdhp442's Avatar
    Join Date
    Aug 2018
    Gender
    male
    Posts
    13
    Reputation
    10
    Thanks
    2
    Quote Originally Posted by RoPMadM View Post
    Are you running with the highest privileges?
    Yes i do.
    and still getting this error

  6. #6
    RoPMadM's Avatar
    Join Date
    Jul 2013
    Gender
    male
    Location
    __asm
    Posts
    226
    Reputation
    12
    Thanks
    251
    My Mood
    Cynical
    Did you check everything else?

    - Is the ProcessHandle valid?
    - Does the game have an AC wich is blocking your code?
    - Try to compile it and run it as admin...

  7. #7
    heiron70's Avatar
    Join Date
    Sep 2014
    Gender
    male
    Posts
    17
    Reputation
    10
    Thanks
    4
    you can pit this code (CDbl(&H7etc.)) because you exceed the maximum integer value

Similar Threads

  1. Replies: 15
    Last Post: 08-19-2015, 11:36 PM
  2. [WTS] SteamGifts - ASK FOR ANY GAME | PAY 60% OF STEAM STORE
    By DragonDesigns in forum Selling Accounts/Keys/Items
    Replies: 0
    Last Post: 06-20-2015, 12:08 PM
  3. Easy®SteamGifts - ASK FOR ANY GAME | PAY 60% OF STEAM STORE
    By Easy® in forum Selling Accounts/Keys/Items
    Replies: 0
    Last Post: 06-19-2015, 04:54 PM
  4. Can you get banned for using a hack for one game?
    By monster255 in forum Counter-Strike 2 Discussions
    Replies: 0
    Last Post: 09-27-2014, 09:11 AM
  5. Why/when did you start using hacks? And for wich game?
    By BtchPlease in forum General Gaming
    Replies: 57
    Last Post: 08-08-2013, 08:31 PM