Как обратится к оперативной памяти, выделенной под указаный процес - VB

Узнай цену своей работы

Формулировка задачи:

Ребята подскажите пожалуйста, как обратится к оперативной памяти, выделенной под указаный процес. P.S.: Хочу сделать прогу типо артмани, но никак не могу найти про доступ к оперативной памяти. Буду очень благодарен за помощь.

Решение задачи: «Как обратится к оперативной памяти, выделенной под указаный процес»

textual
Листинг программы
Option Explicit
     
    Private Const PROCESS_VM_READ = &H10
    Private Const PROCESS_VM_WRITE = &H20
    Private Const PROCESS_VM_OPERATION = &H8
    Private Const PROCESS_VM = PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE
     
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Long, ByVal lpBuffer As Long, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
    Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
     
Private Sub Command1_Click()
Dim hW As Long, PId As Long, hP As Long, buf As Long, address As Long, NewTimer As Integer
      
      'Необходимо зппустить Сапер и начать играть
      hW = FindWindow("Сапер", "Сапер") ' если игра английская, то корректировать!
      Call GetWindowThreadProcessId(hW, PId)
     
      hP = OpenProcess(PROCESS_VM, 0&, PId)
      address = &H100579C ' По этому адресу у сапера время тикает
      Call ReadProcessMemory(hP, address, VarPtr(buf), 2, 0&)  'Считываем значение времени
      MsgBox buf  'после нажатия на кнопку вы увидите время игры в секундах.
      NewTimer = 1
      'А тут сбрасываем время на 1 сек - и ты  чемпион!
      Call WriteProcessMemory(hP, ByVal address, NewTimer, LenB(NewTimer), 0&)
     
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы