PDA

Просмотр полной версии : [Статья] Читаем память [Autoit]


Goooooogle
18.07.2012, 12:13
Базовый урок для новичков как прочитать память клиента.

Ищем базовый адрес или BA
Чтобы найти базовый адрес можно воспользоваться вот этими способами:
1)Найти нужную версию и посмотреть BA ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
2)Руками через Cheat Engine ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
3)Программно ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
Нашли адрес?объявим его.
Также нужно указать из чего мы будем читать.

#include <Memory.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$base = 0xB27A04
$memory = _MemoryOpen (ProcessExists("elementclient.exe"))

Мой BA 0xB27A04
Сделаем Форму с кнопкой
$Form1 = GUICreate("Form1", 116, 79, 192, 124)
$Button1 = GUICtrlCreateButton("HP", 16, 8, 75, 25)
$Button2 = GUICtrlCreateButton("MP", 16, 40, 75, 25)
GUISetState(@SW_SHOW)

Переходим к коду
Чтение памяти выполняется функцией _MemoryRead
Чтобы написать Код нам нужно найти смещения.Посмотреть их можно в этой теме [Ссылки могут видеть только зарегистрированные и активированные пользователи]
цепочка смещений у нас такая BaseAdress +0x1C +0x34, длинна структуры 0x1314 байта
Вот что получается
$hp = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x490, $memory)
$ms = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x494, $memory)

Теперь привязываем кнопку к функции

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button1
MsgBox(0,"HP",$hp)
Case $button2
MsgBox (0,"MP",$mp)
EndSwitch
WEnd


Вот и все
Исходник ([Ссылки могут видеть только зарегистрированные и активированные пользователи])
NomadMemory ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

Smertig
27.07.2012, 21:46
Для новичков - подойдет отлично. Только распиши и прокомментируй цепочку _memoryread(_memoryread...
А то, включив "режим нуба", я б не понял.
И про смещения напиши.

blackchaos
19.08.2012, 18:09
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
опишите пошагово как и что делать а то вот ошыбка

Геймeр
19.08.2012, 21:43
опишите пошагово как и что делать а то вот ошыбка
вот [Ссылки могут видеть только зарегистрированные и активированные пользователи] такая точно проблема, зайди
а вообще для этой функции нада добавить сверху include "NomadMemory.au3" и найти в интернете этот самый файл и паложить рядом с исходом. Ошибка афтара, или проста недочет.

Goooooogle
27.08.2012, 12:28
blackchaos, Скачай NomadMemory ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

cristallpppw
03.05.2015, 18:03
Подскажите пожалуйста что я делаю не так не могу найти простейшего просто хп перса? версия клиента 1.5.1
запускаю скомпелированый фаил от админа

#cs ----------------------------------------------------------------------------

AutoIt Version: 3.3.12.0
Author: myName

Script Function:
Template AutoIt script.

#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here

;-------------------------обьявление ба адреса------------------------------------------
#include <Memory.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <NomadMemory.au3>
#RequireAdmin


Dim $numbers[3]
Dim $hp3
Dim $hp2

;запуст от имени админи с библиотеки <NomadMemory.au3>
;SetPrivilege("SeDebugPrivilege", 1)

;0x00C7CA6C 0x00C7D20C
$base = 0x00C7CA6C
;$base = 0xC7CA6C
;$base = 0x00C7D20C
;$base = 0xC7D20C

;$memory = _MemoryOpen (ProcessExists("elementclient"))
$memory = _MemoryOpen (ProcessExists("elementclient.exe"))
;$memory = _MemoryOpen (ProcessExists("Perfect World Crystal"))
;$memory = _MemoryOpen (ProcessExists("13876"))
;-------------------------обьявление ба адреса------------------------------------------

;-------------------------форма с кнопкой------------------------------------------
; длина вісота
$Form1 = GUICreate("Form1", 326, 289, 402, 334)
$Button1 = GUICtrlCreateButton("узнать HP", 16, 8, 75, 25)
$Button2 = GUICtrlCreateButton("узнать MP", 16, 40, 75, 25)
$Button3 = GUICtrlCreateButton("узнать ФРИЗ", 16, 72, 75, 25)
$Button4 = GUICtrlCreateButton("узнать x y z", 16, 105, 75, 25)
$Label1 = GUICtrlCreateLabel("Label1", 16, 137, 76, 25)
GUISetState(@SW_SHOW)
;-------------------------форма с кнопкой------------------------------------------
;
;-------------------------читаем память------------------------------------------mp494
$hp1 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x30, $memory)+0x4A8, $memory)
$hp2 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x4A8, $memory)
$hp3 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x32, $memory)+0x4A8, $memory)
$hp4 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x30, $memory)+0x578, $memory)
$hp5 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x4B0, $memory)
$hp6 = _MemoryRead(_MemoryRead(_MemoryRead(_MemoryRead($b ase, $memory)+0x1C, $memory)+0x30, $memory)+0x4A0, $memory)

$mp = _MemoryRead ($base, $memory)
$mp1 = _MemoryRead ($mp+0x1C, $memory)
$mp2 = _MemoryRead ($mp1+0x30, $memory)
$mp3 = _MemoryRead ($mp2+0x4F8, $memory)

$mp5 = _MemoryRead ($mp1+0x34, $memory)
$mp6 = _MemoryRead ($mp5+0x4F8, $memory)

$mp7 = _MemoryRead ($mp1+0x24, $memory)
$mp8 = _MemoryRead ($mp7+0x4F8, $memory)

;$mp1 = _MemoryRead ($mp+0x1C, $memory)
;$mp2 = _MemoryRead ($mp1+0x30, $memory)
;$mp3 = _MemoryRead ($mp2+0x4A8, $memory)

$mp4 = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x4A8, $memory)

$fr = _MemoryRead (_MemoryRead ($base, $memory)+0xC9EC00, $memory)

$x = _MemoryRead (_MemoryRead (_MemoryRead (_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x3C, $memory)
$x1 = _MemoryRead (_MemoryRead (_MemoryRead ($base, $memory)+0x1C, $memory)+0x3C, $memory)
$y = _MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x34, $memory)+0x44, $memory)
$y1 = _MemoryRead (_MemoryRead (_MemoryRead ($base, $memory) + 0x1C, $memory)+0x44, $memory)
$z = _MemoryRead (_MemoryRead (_MemoryRead ($base, $memory)+0x1C, $memory)+0x40, $memory)
$z1 = _MemoryRead (_MemoryRead (_MemoryRead ($base, $memory)+0x1C, $memory)+0x40, $memory)
;-------------------------читаем память------------------------------------------

;-------------------------привязываем кнопку к функции------------------------------------------
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $button1
MsgBox(0,"HP",$hp1 & " - " & $hp2 & " - тут" & $hp3 & " - " & $hp4 & " -лвл " & $hp5 & " -лвл " & $hp6)
Case $button2
MsgBox (0,"MP",$mp & " - " & $mp1 & " - " & $mp2 & " - " & $mp3 & " - " & $mp4 & " - " & $mp5 & " - " & $mp6 & " - " & $mp7 & " - " & $mp8)
Case $button3
MsgBox (0,"ФРИЗ",$fr)
Case $button4
MsgBox (0,"x y z"," x" & $x & " - " & $x1 & " y" & $y & " - " & $y1 & " z" & $z & " - " & $z1)

EndSwitch
WEnd
;-------------------------привязываем кнопку к функции------------------------------------------

перепробовала все варианты

#Include "WinAPI.au3"
#Include "Constants.au3"

; MinHP Read By Sirioga
; Ver 1.4.5 Build 2305
;0x00C7CA6C 0x00C7D20C
;$base = 0x00C7CA6C
;$base = 0xC7CA6C
;$base = 0x00C7D20C
;$base = 0xC7D20C

Global $iPID, $iRead

;$handle = _WinAPI_FindWindow("ElementClient Window", "Perfect World Crystal")
;$handle = _WinAPI_FindWindow("elementclient Window", "Perfect World Crystal")
$handle = _WinAPI_FindWindow("elementclient Window", "Perfect World Crystal")

_WinAPI_GetWindowThreadProcessId($handle, $iPID)
$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, False, $iPID)

Global $fPoint = DllStructCreate("dword")
if @error Then
MsgBox(0,"","Error in DllStructCreate " & @error);
exit
endif

_WinAPI_ReadProcessMemory($hProcess, 0x00C7D20C, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
MsgBox(0,"MinHP1",DllStructGetData($fPoint,1))
_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x1C, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
MsgBox(0,"MinHP2",DllStructGetData($fPoint,1))
_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x30, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
MsgBox(0,"MinHP3",DllStructGetData($fPoint,1))
_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x4A8, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
;_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x3C, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
MsgBox(0,"MinHP4",DllStructGetData($fPoint,1))

помогите пожалуйста прочитать хоть просто хп

growl13
07.05.2015, 14:32
помогите пожалуйста прочитать хоть просто хп


#include <NomadMemory.au3>

$base = 0xCCEFAC
$memory = _MemoryOpen (ProcessExists("elementclient.exe"))
$hp=_MemoryRead (_MemoryRead (_MemoryRead(_MemoryRead ($base, $memory)+0x1C, $memory)+0x30, $memory)+0x4B8, $memory)
ConsoleWrite("HP: " & $hp & @CRLF)


вот простейший способ считать хп
оффсеты для руофа 1.5.1
для других серверов ищи соответственные оффсеты