Как обратится к оперативной памяти, выделенной под указаный процес - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д