На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: SCINER, B.V.
  
    > Как использовать ReadProcessMemory
      ExpandedWrap disabled
        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 CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
         
        Private Sub Form_Load()
          
          Dim hW As Long, PId As Long, hP As Long, buf As Long
          
          'Необходимо создать для теста другую маленькую программу, которая будет просто присваивать
          'четырёхбайтовой переменной какое-нибудь значение, и держать ту программу запущенной
          hW = FindWindow("ThunderFormDC", "Target")
          Call GetWindowThreadProcessId(hW, PId)
         
          hP = OpenProcess(PROCESS_VM, 0&, PId)
          
          Call ReadProcessMemory(hP, &H1AC6AC, VarPtr(buf), 4, 0&)  'вместо &H51041C может быть и другой адрес, это надо проверять
          MsgBox buf
          Call CloseHandle(hP)
         
          Unload Me
         
        End Sub
      Сообщение отредактировано: B.V. -
        Код "тестовой" программы:

        ExpandedWrap disabled
          Dim n As Long
           
          Private Sub Form_Load()
              n = 335577
              Debug.Print VarPtr(n) 'Этот адрес нужно вписать в пример выше
              Me.Caption = "Target"
          End Sub
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0192 ]   [ 16 queries used ]   [ Generated: 27.04.24, 18:27 GMT ]