Read-ProcessMemory



Прочитать данные из памяти процесса
Параметры

  • -Address Адрес памяти

  • -Process Процесс

  • -Read Прочитать число или текст

  • -Size Прочитать определенное количество байт

  • -Module Имя модуля

Примеры

  1. Найти процесс и прочитать значение int с указанного адреса.

    Wake up, Neo, select all

    Clear-Host
    try{
    $process = Get-Process l2 -ErrorAction Stop # найти процесс с именем l2
    }
    catch{
    Write-Host "Процесс не найден" -ForegroundColor Red
    Stop-Script
    }
    Write-Host "Процесс найден" -ForegroundColor Green

    $address = 0x140BE340 # адрес, с которого прочитать данные
    $x = Read-ProcessMemory $address $process -Read Int32 # прочитать int
    Write-Host $x
  2. Прочитать строку.

    Wake up, Neo, select all

    Clear-Host
    try{
    $process = Get-Process l2 -ErrorAction Stop # найти процесс с именем l2
    }
    catch{
    Write-Host "Процесс не найден" -ForegroundColor Red
    Stop-Script
    }
    Write-Host "Процесс найден" -ForegroundColor Green

    $address = 0x20789F0C # адрес, с которого прочитать данные
    $s = Read-ProcessMemory $address $process -Read Unicode # прочитать строку юникод
    Write-Host $s
  3. Прочитать значение относительно указанного модуля.

    Wake up, Neo, select all

    Clear-Host
    try{
    $process = Get-Process l2 -ErrorAction Stop # найти процесс с именем l2
    }
    catch{
    Write-Host "Процесс не найден" -ForegroundColor Red
    Stop-Script
    }
    Write-Host "Процесс найден" -ForegroundColor Green

    $address = 0x789F0C # адрес, с которого прочитать данные
    $s = Read-ProcessMemory $address $process -Read Unicode -Module 'engine.dll'
    Write-Host $s
  4. Прочитать значение относительно указанного модуля. В отличие от предыдущего примера адрес модуля ищется один раз, а не при каждом вызове функции чтения памяти. Если функция используется часто с указанием модуля, то рекомендуется использовать этот вариант.

    Wake up, Neo, select all

    Clear-Host
    try{
    $process = Get-Process l2 -ErrorAction Stop # найти процесс с именем l2
    }
    catch{
    Write-Host "Процесс не найден" -ForegroundColor Red
    Stop-Script
    }
    Write-Host "Процесс найден" -ForegroundColor Green

    # получить адрес модуля engine.dll
    $Modules = (Get-ProcessModules $Process)|Where-Object {$_.Name -match "engine.dll"}
    Write-Host $Modules.Address # адрес модуля engine.dll

    $address = 0x789F0C # адрес, с которого прочитать данные

    # порочитать значение относительно модуля
    $s = Read-ProcessMemory ($Modules.Address + $address) $process -Read Unicode
    Write-Host $s