0

First, i have a memory write module like this :

    Module Lul

#Region "Declarations"

        Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
        Private Declare Function WriteProcessMemory 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 WriteFloatMemory 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 Integer
        Private Declare Function ReadFloat Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByRef buffer As Single, ByVal size As Int32, ByRef lpNumberOfBytesRead As Int32) As Boolean
        Private Declare Function ReadProcessMemory 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 CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Integer) As Integer

        Private string1 As Long
        Private string2 As Integer
        Private RBuff1 As Long
        Private RBuff2 As Single
        Private RBuff3 As Integer

#End Region

        Public Function IsProcessOpen(ByVal name As String) As Boolean

            For Each clsProcess As Process In Process.GetProcesses

                If clsProcess.ProcessName.Contains(name) Then


                    Return True

                End If
            Next
            ' Do nothing
            Return False
        End Function

#Region "Hacks"

        'WriteMemory
        Private Function WriteMemory(ByVal Address As Integer, ByVal Value As Long, ByVal Bytes As Integer)
            Dim ACRSPLookUp As Process() = Process.GetProcessesByName("S4Client")
            If ACRSPLookUp.Length = 0 Then
                End
            End If
            Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, ACRSPLookUp(0).Id)
            WriteProcessMemory(processHandle, Address, Value, Bytes, Nothing)
            CloseHandle(processHandle)

            Return Nothing
        End Function

        'WriteFloat
        Private Function WriteFloat(ByVal Address As Integer, ByVal Value As Single)
            Dim ACRSPLookUp As Process() = Process.GetProcessesByName("S4Client")
            If ACRSPLookUp.Length = 0 Then
                End
            End If
            Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, ACRSPLookUp(0).Id)
            WriteFloatMemory(processHandle, Address, Value, 4, Nothing)
            CloseHandle(processHandle)

            Return Nothing
        End Function

        'NOP
        Private Function NOP(ByVal Address As Integer, ByVal value As Integer)
            Dim ACRSPLookUp As Process() = Process.GetProcessesByName("S4Client")
            If ACRSPLookUp.Length = 0 Then
                End
            End If
            Dim processHandle As IntPtr = OpenProcess(&H1F0FFF, 0, ACRSPLookUp(0).Id)
            WriteProcessMemory(processHandle, Address, value, 1, Nothing)
            CloseHandle(processHandle)

            Return Nothing
        End Function

#End Region

#Region "Functions"

        Public Function memoryh4x(ByVal address As String, ByVal value As Long, ByVal bytes As Byte)
            If IsProcessOpen("S4Client") Then
                string2 = "&H" & Hex(string1 + address)
                WriteMemory(string2, value, bytes)
            End If
            Return Nothing
        End Function

        Public Function floath4x(ByVal address As String, ByVal value As Long)
            If IsProcessOpen("S4Client") Then
                string2 = "&H" & Hex(string1 + address)
                WriteFloat(string2, value)
            End If
            Return Nothing
        End Function

        Public Function noph4x(ByVal address As String, ByVal value As Long)
            If IsProcessOpen("S4Client") Then
                string2 = "&H" & Hex(string1 + address)
                NOP(string2, value)


            End If
            Return Nothing
        End Function

#End Region
    End Module

And i'm writing to process's memory like this :

memoryh4x(&H482719, 8, 4)

I want it to put a random value when checkbox is checked everytime instead of 8. How can i do that ? Thank you.

ɐsɹǝʌ ǝɔıʌ
  • 4,440
  • 3
  • 35
  • 56
user3423677
  • 41
  • 2
  • 10
  • Your use of the keyword `End` is misused. That is not the right way to end a function - it will end your app - and not in a proper way! – OneFineDay Mar 19 '14 at 14:01
  • I guess you get it wrong. I just want it to generate a random value to write. – user3423677 Mar 19 '14 at 14:03
  • No, I am trying to tell you that is a bad thing to call and should never be used. Let me know what the name of your software is so I can avoid it - thanks – OneFineDay Mar 19 '14 at 14:07
  • It's a client-sided hack. :P @Miky Dinescu's answer worked, thanks anyway. – user3423677 Mar 19 '14 at 14:11

2 Answers2

3

You can use the .NET Random number generator to generate a random value:

 ' You should only declare and initialize this once for your class
 '   otherwise the values you'll get won't be very random
 Dim rGenerator As System.Random = New System.Random()


 Dim val As Integer = 0        

 val = rGenerator.Next(1, 8)         ' generate a random integer between 1 and 8

 memoryh4x(&H482719, val, 4)
Mike Dinescu
  • 54,171
  • 16
  • 118
  • 151
  • @user3423677 - glad to help.. as stated in the answer, make sure to only initialize the random number generator once, not every time you call .Next on it! – Mike Dinescu Mar 19 '14 at 14:20
  • Just a little nitpick: The line `val = rGenerator.Next(1, 8)` will generate a random number from 1 to 7. It won't include 8. – Chris Dunaway Mar 19 '14 at 15:05
0

IF you care the slightest if the number is random, don't use System.Random()

I was shocked just how horrible it was at creating random numbers!

See my posting Here

Community
  • 1
  • 1
Traderhut Games
  • 1,222
  • 1
  • 15
  • 30