Что нового

Вывод значения из памяти процесса в MsgBox( как правильно? )

iDisketka

Новичок
Сообщения
20
Репутация
0
Привет всем...я уже несколько дней бьюсь над проблеммой вычисления ШП в одной из мморпг ЛастХаос....поиск по пикселям значительного результата не принёс..так как и сам ШП бар и задний фон оба состоят из одной и тойже гаммы цветов...
поэтому пытаюсь вычеслить ШП из памяти игры...
вычеслив с помощью СЕ базовый адрес моево ШП...и вычеслив оффсет я пытался на форуме найти похожее решение...и вот что у меня получается...

попытка вывести значение ШП в МсжБокс
#RequireAdmin
#include <nomadmemory.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>



$ProcessName = "Last Chaos - Aeria Games & Entertainment (Window 1280x800)"
Global $ProcessID = WinGetProcess($ProcessName,"") ;
Global $HP = 0x00109460;
Global $DllInformation = _MemoryOpen($ProcessID)
$ptr = 'ptr'
If $ProcessID = -1 Then
MsgBox(4096, "#Error4", "Сперва запустите игру.")
Exit
EndIf
$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr'))
$CurrentHP = $HP + 0x106B1E00 ;offset
$HPmass = (_MemoryRead($HP, $DllInformation, 'ptr'))

MsgBox(1,"value",$HPmass )

Но так как я только начинающий скриптер толком ничево не выходит...значение выходит многозначное число которое больше похоже на ещё какойнибудь оффсет...но никак не на состояние моево ШП...
адреса рабочие я перепроверил несколько раз в СЕ,проблемма только в том что возможно функции расставленны неправильно...

За помощь заранее благодарен
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,602
Репутация
941
Re: Вывод значения из памяти процесса в МсжБокс( как правильно? )

{CodeWarn}


Добавлено:
Сообщение автоматически объединено:

{LangWarn}


Добавлено:
Сообщение автоматически объединено:

http://autoit-script.ru/index.php?topic=4334.0
 
Автор
I

iDisketka

Новичок
Сообщения
20
Репутация
0
Re: Вывод значения из памяти процесса в МсжБокс( как правильно? )

я по этой теме и базируюсь ...только вот незнаю в чём проблемма...вроде нашол базовый адрес который был зелёным итд итп...и указатель есть.....а когда запускаю скрипт то выдаёт значение 0....в твоём гайде несколько пунктов нехватает неуверен если правильно нашол БА.....мне вообще только адрес ХП и нужено было найти....
ввожу адреса в скрипт....все которые нахожу...значение всегда 0...в чём может быть дело ?
 

winstan

Эксплотатор)
Сообщения
406
Репутация
78
Re: Вывод значения из памяти процесса в МсжБокс( как правильно? )

iDisketka [?]
Код:
#RequireAdmin
#include <nomadmemory.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$ProcessName = "Last Chaos - Aeria Games & Entertainment (Window 1280x800)"
Global $ProcessID = WinGetProcess($ProcessName,"") ;
Global $HP = 0x00109460;
Global $DllInformation = _MemoryOpen($ProcessID)
$ptr = 'ptr'
If $ProcessID = -1 Then
    MsgBox(4096, "#Error4", "Сперва запустите игру.")
    Exit
EndIf
$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr')) 
$CurrentHP = $HP +  0x106B1E00 ;offset               ;зачем изменять $CurrentHP если в дальнейшем оно не используется? 
$HPmass =  (_MemoryRead($HP, $DllInformation, 'ptr'))
MsgBox(1,"value",$HPmass )


чёто в последних строчках напутоно)
мне кажется должно быть
Код:
$CurrentHP = (_MemoryRead($HP, $DllInformation, 'ptr')) ;читается значение из базового адреса

$CurrentHP = $CurrentHP +  0x106B1E00 ;к значению базового адреса прибавляется оффсет
 
$HPmass =  (_MemoryRead($CurrentHP, $DllInformation, 'ptr')) ;читается значение требуемого адреса

MsgBox(1,"value",$HPmass )


-------------------------------------
А вапще то у меня есть сомнения насчёт того не перепутол ли ты базовый адрес и оффсет т.к. я заметил что обычно оффсет не такие большие чиста, а какрас такой длинны как ваш базовый адрес...

------------------------------------
какрас и перепутал) на руском сейчас
базовый адрес 0x106B90C0
а оффсет на хп 0x109460
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,669
Репутация
2,463
Re: Вывод значения из памяти процесса в МсжБокс( как правильно? )

iDisketka
Поправь название темы, «МсжБокс» это не по русский.
 
Автор
I

iDisketka

Новичок
Сообщения
20
Репутация
0
исправил название темы с нерусской на русскую )


а насчёт адреса и оффсета...я же говорю что уже перепробовал переставить местами как только можнобыло....
сейчас попробовал и так как ты предложил , значение выводится 0......вроде в игре никакой защиты нету...и к томуже бызовый адрес вычесляется с первого захода....
 

winstan

Эксплотатор)
Сообщения
406
Репутация
78
попробуй так
Код:
#RequireAdmin
#include <nomadmemory.au3>

$ProcessName = "nksp.exe"
$base=0x106B1E00
$offset=0x00109460

$ProcessID=ProcessExists($Process)

$memory = _MemoryOpen($ProcessID)
$pointer== _MemoryRead($base,$memory)
$HPpointer=$pointer+$offset

$HP=_MemoryRead($HPpointer,$memory)

MsgBox(1,"value",$HP)
 
Верх