Memory

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ~blaze~.

    hallo, ich interessier mich neuerdings für das sogenannte Memory hacking jedoch nutze ich das nur aus interesse und bei meinen Offline Games so sieht mein Code aus


    Achtung dieser code stammt nicht von mir :)

    Module:

    VB.NET-Quellcode

    1. Module ReadWritingMemory
    2. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer
    3. 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
    4. 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
    5. 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
    6. 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
    7. 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
    8. 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
    9. Const PROCESS_ALL_ACCESS = &H1F0FF
    10. 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
    11. Try
    12. Dim lvl As Integer = Address
    13. For i As Integer = 1 To Level
    14. lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
    15. Next
    16. WriteInteger(Process, lvl, Value, nsize)
    17. Return True
    18. Catch ex As Exception
    19. Return False
    20. End Try
    21. End Function
    22. 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
    23. Try
    24. Dim lvl As Integer = Address
    25. For i As Integer = 1 To Level
    26. lvl = ReadInteger(Process, lvl, nsize) + Offsets(i - 1)
    27. Next
    28. Dim vBuffer As Integer
    29. vBuffer = ReadInteger(Process, lvl, nsize)
    30. Return vBuffer
    31. Catch ex As Exception
    32. End Try
    33. End Function
    34. 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
    35. Try
    36. Dim lvl As Integer = Address
    37. For i As Integer = 1 To Level
    38. lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
    39. Next
    40. WriteFloat(Process, lvl, Value, nsize)
    41. Return True
    42. Catch ex As Exception
    43. Return False
    44. End Try
    45. End Function
    46. 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
    47. Try
    48. Dim lvl As Integer = Address
    49. For i As Integer = 1 To Level
    50. lvl = ReadFloat(Process, lvl, nsize) + Offsets(i - 1)
    51. Next
    52. Dim vBuffer As Single
    53. vBuffer = ReadFloat(Process, lvl, nsize)
    54. Return vBuffer
    55. Catch ex As Exception
    56. End Try
    57. End Function
    58. 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
    59. Try
    60. Dim lvl As Integer = Address
    61. For i As Integer = 1 To Level
    62. lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
    63. Next
    64. WriteLong(Process, lvl, Value, nsize)
    65. Return True
    66. Catch ex As Exception
    67. Return False
    68. End Try
    69. End Function
    70. 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
    71. Try
    72. Dim lvl As Integer = Address
    73. For i As Integer = 1 To Level
    74. lvl = ReadLong(Process, lvl, nsize) + Offsets(i - 1)
    75. Next
    76. Dim vBuffer As Long
    77. vBuffer = ReadLong(Process, lvl, nsize)
    78. Return vBuffer
    79. Catch ex As Exception
    80. End Try
    81. End Function
    82. Public Sub WriteNOPs(ByVal ProcessName As String, ByVal Address As Long, ByVal NOPNum As Integer)
    83. Dim C As Integer
    84. Dim B As Integer
    85. If ProcessName.EndsWith(".exe") Then
    86. ProcessName = ProcessName.Replace(".exe", "")
    87. End If
    88. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    89. If MyP.Length = 0 Then
    90. MessageBox.Show(ProcessName & " isn't open!")
    91. Exit Sub
    92. End If
    93. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    94. If hProcess = IntPtr.Zero Then
    95. MessageBox.Show("Failed to open " & ProcessName & "!")
    96. Exit Sub
    97. End If
    98. B = 0
    99. For C = 1 To NOPNum
    100. Call WriteProcessMemory1(hProcess, Address + B, &H90, 1, 0&)
    101. B = B + 1
    102. Next C
    103. End Sub
    104. Public Sub WriteXBytes(ByVal ProcessName As String, ByVal Address As Long, ByVal Value As String)
    105. If ProcessName.EndsWith(".exe") Then
    106. ProcessName = ProcessName.Replace(".exe", "")
    107. End If
    108. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    109. If MyP.Length = 0 Then
    110. MessageBox.Show(ProcessName & " isn't open!")
    111. Exit Sub
    112. End If
    113. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    114. If hProcess = IntPtr.Zero Then
    115. MessageBox.Show("Failed to open " & ProcessName & "!")
    116. Exit Sub
    117. End If
    118. Dim C As Integer
    119. Dim B As Integer
    120. Dim D As Integer
    121. Dim V As Byte
    122. B = 0
    123. D = 1
    124. For C = 1 To Math.Round((Len(Value) / 2))
    125. V = Val("&H" & Mid$(Value, D, 2))
    126. Call WriteProcessMemory1(hProcess, Address + B, V, 1, 0&)
    127. B = B + 1
    128. D = D + 2
    129. Next C
    130. End Sub
    131. Public Sub WriteInteger(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Integer, Optional ByVal nsize As Integer = 4)
    132. If ProcessName.EndsWith(".exe") Then
    133. ProcessName = ProcessName.Replace(".exe", "")
    134. End If
    135. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    136. If MyP.Length = 0 Then
    137. MessageBox.Show(ProcessName & " isn't open!")
    138. Exit Sub
    139. End If
    140. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    141. If hProcess = IntPtr.Zero Then
    142. MessageBox.Show("Failed to open " & ProcessName & "!")
    143. Exit Sub
    144. End If
    145. Dim hAddress, vBuffer As Integer
    146. hAddress = Address
    147. vBuffer = Value
    148. WriteProcessMemory1(hProcess, hAddress, CInt(vBuffer), nsize, 0)
    149. End Sub
    150. Public Sub WriteFloat(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Single, Optional ByVal nsize As Integer = 4)
    151. If ProcessName.EndsWith(".exe") Then
    152. ProcessName = ProcessName.Replace(".exe", "")
    153. End If
    154. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    155. If MyP.Length = 0 Then
    156. MessageBox.Show(ProcessName & " isn't open!")
    157. Exit Sub
    158. End If
    159. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    160. If hProcess = IntPtr.Zero Then
    161. MessageBox.Show("Failed to open " & ProcessName & "!")
    162. Exit Sub
    163. End If
    164. Dim hAddress As Integer
    165. Dim vBuffer As Single
    166. hAddress = Address
    167. vBuffer = Value
    168. WriteProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
    169. End Sub
    170. Public Sub WriteLong(ByVal ProcessName As String, ByVal Address As Integer, ByVal Value As Long, Optional ByVal nsize As Integer = 4)
    171. If ProcessName.EndsWith(".exe") Then
    172. ProcessName = ProcessName.Replace(".exe", "")
    173. End If
    174. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    175. If MyP.Length = 0 Then
    176. MessageBox.Show(ProcessName & " isn't open!")
    177. Exit Sub
    178. End If
    179. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    180. If hProcess = IntPtr.Zero Then
    181. MessageBox.Show("Failed to open " & ProcessName & "!")
    182. Exit Sub
    183. End If
    184. Dim hAddress As Integer
    185. Dim vBuffer As Long
    186. hAddress = Address
    187. vBuffer = Value
    188. WriteProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
    189. End Sub
    190. Public Function ReadInteger(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Integer
    191. If ProcessName.EndsWith(".exe") Then
    192. ProcessName = ProcessName.Replace(".exe", "")
    193. End If
    194. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    195. If MyP.Length = 0 Then
    196. MessageBox.Show(ProcessName & " isn't open!")
    197. Exit Function
    198. End If
    199. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    200. If hProcess = IntPtr.Zero Then
    201. MessageBox.Show("Failed to open " & ProcessName & "!")
    202. Exit Function
    203. End If
    204. Dim hAddress, vBuffer As Integer
    205. hAddress = Address
    206. ReadProcessMemory1(hProcess, hAddress, vBuffer, nsize, 0)
    207. Return vBuffer
    208. End Function
    209. Public Function ReadFloat(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Single
    210. If ProcessName.EndsWith(".exe") Then
    211. ProcessName = ProcessName.Replace(".exe", "")
    212. End If
    213. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    214. If MyP.Length = 0 Then
    215. MessageBox.Show(ProcessName & " isn't open!")
    216. Exit Function
    217. End If
    218. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    219. If hProcess = IntPtr.Zero Then
    220. MessageBox.Show("Failed to open " & ProcessName & "!")
    221. Exit Function
    222. End If
    223. Dim hAddress As Integer
    224. Dim vBuffer As Single
    225. hAddress = Address
    226. ReadProcessMemory2(hProcess, hAddress, vBuffer, nsize, 0)
    227. Return vBuffer
    228. End Function
    229. Public Function ReadLong(ByVal ProcessName As String, ByVal Address As Integer, Optional ByVal nsize As Integer = 4) As Long
    230. If ProcessName.EndsWith(".exe") Then
    231. ProcessName = ProcessName.Replace(".exe", "")
    232. End If
    233. Dim MyP As Process() = Process.GetProcessesByName(ProcessName)
    234. If MyP.Length = 0 Then
    235. MessageBox.Show(ProcessName & " isn't open!")
    236. Exit Function
    237. End If
    238. Dim hProcess As IntPtr = OpenProcess(PROCESS_ALL_ACCESS, 0, MyP(0).Id)
    239. If hProcess = IntPtr.Zero Then
    240. MessageBox.Show("Failed to open " & ProcessName & "!")
    241. Exit Function
    242. End If
    243. Dim hAddress As Integer
    244. Dim vBuffer As Long
    245. hAddress = Address
    246. ReadProcessMemory3(hProcess, hAddress, vBuffer, nsize, 0)
    247. Return vBuffer
    248. End Function
    249. End Module


    und mein Aufruf sieht wie folgt aus :

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. If CheckBox1.Checked Then
    3. WriteInteger("saintsrowthethird", &H2A3C5E0, 1000)
    4. WriteInteger("saintsrowthethird", &H2A3CC30, 100)
    5. WriteInteger("saintsrowthethird", &H12EE61F4, 100)
    6. Else
    7. End If
    8. End Sub


    nun zu mein Problem ich möchte gerne eine Pointer setzen
    aber dazu fehlen mir die kenntnise in der richtung , weil ich in dieser richtung noch nie was Programmiert hatte/habe
    deshalp seit ihr gefragt und ich hoffe ihr könnt mir helfen
    also verstehe das nciht wie das mit den Pointer läuft , wäre gut wenn jemand helfen könnte

    LG :D