Что нового

"Синхронизация" CheatEngine и Autoit (Смещение адресов, адреса)

smsgeorge

Новичок
Сообщения
63
Репутация
0
Здравствуйте Не могу разобраться как перенести адрес и чит енжин в AutoIt'е. А так же есть Адреса со смещением - Прикрепил!
А так же адрес без смещения ---"lotroclient.exe"+018B1558 но не понятно, как использовать lotroclient.exe и потом +018B1558
Как реализовать синхронизацию?
Код:
#Include "WinAPI.au3"
#Include "Constants.au3"
#include <nomadmemory.au3>
#include <memory.au3>
#include <GuiListView.au3>
#include <GUIConstants.au3>
#include <Array.au3>
#include <WindowsConstants.au3>

; MinHP Read By Sirioga
; Ver 1.4.5 Build 2305

Global $iPID, $iRead

$handle = _WinAPI_FindWindow("Turbine Device Class", "Властелин Колец Онлайн™")
_WinAPI_GetWindowThreadProcessId($handle, $iPID)
$hProcess = _WinAPI_OpenProcess($PROCESS_ALL_ACCESS, False, $iPID)

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

_WinAPI_ReadProcessMemory($hProcess, 0x4304BC8E, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
;_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x1C, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
;_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x34, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)
;_WinAPI_ReadProcessMemory($hProcess, DllStructGetData($fPoint,1)+0x494, DllStructGetPtr($fPoint), DllStructGetSize($fPoint), $iRead)

MsgBox(0,"MinHP",DllStructGetData($fPoint,1))
 

Вложения

  • 1.png
    1.png
    27.6 КБ · Просмотры: 19
  • 2.png
    2.png
    8.1 КБ · Просмотры: 15
  • 3 (2).png
    3 (2).png
    7.6 КБ · Просмотры: 14
Автор
S

smsgeorge

Новичок
Сообщения
63
Репутация
0
sngr
lotroclient.exe"+018B1558 как такое использовать и так же, Где ставить флоат или интежер (ну 4б)
Почитал статью (Форум) которую ты дал. Ничего не написано там про мой вопрос, когда я нашел такой адрес lotroclient.exe"+018B1558, помогите пожалуйста


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

sngr
Нет получается. Выдает огромное число.
Код:
#include <MemoryModuleGetBaseAddress.au3>
#include <NomadMemory.au3>
$AionProcessName="Властелин Колец Онлайн™" ; Титул окна, в моем случае AION Client
$ProcessID=9872 ; Идентификатор процесса
global $HPdec
if $ProcessID <> -1 Then

    $sModule = "lotroclient.exe" ; Модуль процесса Aion.bin, который содержит базовый адрес
    $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule); Функция вытаскивает базовый адрес из модуля по PID'у


	ConsoleWrite(@CR)
EndIf
$offset_hp = 0x01646588
$DllInformation = _MemoryOpen($ProcessID)

_CurrentHP()
MsgBox(0, "Значение ХП", StringFormat($HPdec))

Func _CurrentHP()
    $mem = "0x"&hex($baseADDR+$offset_hp)
	ConsoleWrite($mem)
    $CurrentHP = _MemoryRead($mem, $DllInformation, 'ptr') ; читаем адрес из памяти
    Global $HPdec = dec(StringTrimLeft($CurrentHP, 2)) ; возвращаем в десятичном формате
EndFunc
получилось, сделал так
Код:
$CurrentHP = _MemoryRead($mem, $DllInformation, 'float') ; читаем адрес из памяти
    Global $HPdec = dec(StringTrimLeft($CurrentHP, 0)) ; возвращаем в десятичном формате



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

не получается теперь смещение


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

sngr
не получается
Код:
#include <MemoryModuleGetBaseAddress.au3>
#include <NomadMemory.au3>
$AionProcessName="Властелин Колец Онлайн™" ; Титул окна, в моем случае AION Client
$ProcessID=9872 ; Идентификатор процесса
global $HPdec
if $ProcessID <> -1 Then

    $sModule = "lotroclient.exe" ; Модуль процесса Aion.bin, который содержит базовый адрес
    $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule); Функция вытаскивает базовый адрес из модуля по PID'у


	ConsoleWrite(@CR)
EndIf
$offset_hp = 0x18B1558
$DllInformation = _MemoryOpen($ProcessID)

_CurrentHP()
MsgBox(0, "Значение ХП", StringFormat($HPdec))

Func _CurrentHP()
    $mem = "0x"&hex($baseADDR+$offset_hp)
 ConsoleWrite("0 "&"0x"& hex($offset_hp)&@Cr)
 ConsoleWrite("0 "&""& $mem&@Cr)
 $CurrentHP = _MemoryRead( $mem, $DllInformation, 'ptr')
 ConsoleWrite("01 "& $CurrentHP&@Cr)



 ConsoleWrite("1 "&$CurrentHP&@Cr)
 $t=0x78 ;смещение 

  $mem = "0x"&hex($CurrentHP+$t)


$CurrentHP = (_MemoryRead($mem, $DllInformation, 'ptr'))

 ConsoleWrite("1 "&$CurrentHP&@Cr)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

EndFunc


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

после первого смещения показывает 0х0000000609AF9C30 а должно получиться как в чит енжин 09AF9C30


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

откуда взялась 6 перед 09AF9C30
 

filautdinov

Знающий
Сообщения
96
Репутация
9
Попробуй так, набросал на скорую руку думаю разберешься:
MemoryHack.au3 в вложении (не по теме: собирал ее из разных NomadMemory.au3 когда то давно :smile:) посмотри ее там много чего есть для памяти, где то еще валялась переписанная длл-ка с инклудой от ольки для инжекта асм инструкций на Autoit
Код:
#include <MemoryHack.au3>


$AionProcessName="Властелин Колец Онлайн™" ; Титул окна, в моем случае AION Client
$ProcessID=9872 ; Идентификатор процесса

global $HPdec
if $ProcessID <> -1 Then

    $sModule = "lotroclient.exe" ; Модуль процесса Aion.bin, который содержит базовый адрес
    $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule); Функция вытаскивает базовый адрес из модуля по PID'у


    ConsoleWrite(@CR)
 EndIf
 
 
$offset_hp = 0x18B1558
$DllInformation = _MemoryOpen($ProcessID)

_CurrentHP()

MsgBox(0, "Значение ХП", StringFormat($HPdec))


Func _CurrentHP()
   
 $offset_hp = 0x18B1558   
   
 $PID = WinGetProcess("Властелин Колец Онлайн™") 
 $sModule = "lotroclient.exe" 
 
;  оффсеты пример использования
;~  Global $sOffsetWallHack[4]
;~  $sOffsetWallHack[0] = 0
;~  $sOffsetWallHack[1] = 0x0	
;~  $sOffsetWallHack[2] = 0x3c0	
;~  $sOffsetWallHack[3] = 0x5c	
 
 $t=0x78

$sBaseAddr = _MemoryModuleGetBaseAddress($PID, $sModule)
$sFinalADDR1 = "0x" & Hex($sBaseAddr + $offset_hp)

$sValue = _MemoryPointerRead($sFinalADDR1, $DllInformation, $t)	

ConsoleWrite("1 "&$sValue&@Cr)
 

;~ _MemoryPointerWrite ($sFinalADDR1, $sProcessOpen, $sOffsetWallHack, 'свое значение')  ;запись со смещением пример
   
   
   


EndFunc
 

Вложения

  • MemoryHack.au3
    24.1 КБ · Просмотры: 19
Автор
S

smsgeorge

Новичок
Сообщения
63
Репутация
0
filautdinov
для значений флоат надо менять?



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

filautdinov
Так же , читаю память, должно получиться 099e9c30, а получается
$sBaseAddr 0000000000400000
$offset_hp 018B1558
$t 120
Адрес первый 0x00000006099E9C30 , похож на 099e9c30 перед ним какая то 6
Код:
#include <MemoryHack.au3>
#Include "WinAPI.au3"

$AionProcessName="Властелин Колец Онлайн™" ; Титул окна, в моем случае AION Client
$ProcessID=14280 ; Идентификатор процесса
$handle = _WinAPI_FindWindow("Turbine Device Class", "Властелин Колец Онлайн™")
global $HPdec
if $ProcessID <> -1 Then

    $sModule = "lotroclient.exe" ; Модуль процесса Aion.bin, который содержит базовый адрес
    $baseADDR = _MemoryModuleGetBaseAddress($ProcessID, $sModule); Функция вытаскивает базовый адрес из модуля по PID'у


    ConsoleWrite(@CR)
 EndIf


$offset_hp = 0x18B1558
$DllInformation = _MemoryOpen($ProcessID)

_CurrentHP()

MsgBox(0, "Значение ХП", StringFormat($HPdec))


Func _CurrentHP()

 $offset_hp = 0x18B1558

 $PID = WinGetProcess("Властелин Колец Онлайн™")
 ;consolewrite($PID)
 $sModule = "lotroclient.exe"

;  оффсеты пример использования
;~  Global $sOffsetWallHack[4]
;~  $sOffsetWallHack[0] = 0
;~  $sOffsetWallHack[1] = 0x0
;~  $sOffsetWallHack[2] = 0x3c0
;~  $sOffsetWallHack[3] = 0x5c

 $t=0x78


$sBaseAddr = _MemoryModuleGetBaseAddress($PID, $sModule)

ConsoleWrite("$sBaseAddr "&hex($sBaseAddr)&@Cr)
ConsoleWrite("$offset_hp "&hex($offset_hp)&@Cr)
ConsoleWrite("$t "&$t&@Cr)
$sFinalADDR1 = "0x" & Hex($sBaseAddr + $offset_hp)
;$sFinalADDR1 = "0x" & Hex($sBaseAddr + $t)

$g=_MemoryRead($sFinalADDR1, $DllInformation, 'ptr')


$sValue = _MemoryPointerRead($sFinalADDR1, $DllInformation, $t)

ConsoleWrite("1 "&$g&@Cr)


;~ _MemoryPointerWrite ($sFinalADDR1, $sProcessOpen, $sOffsetWallHack, 'свое значение')  ;запись со смещением пример





EndFunc
 

filautdinov

Знающий
Сообщения
96
Репутация
9
Я так полагаю что ты пытаешься вычислить адрес для записи, используй сразу _MemoryPointerWrite для записи с смещением
Напиши полное название игры, скинь таблицу из CE вечерком качну игру посмотрю.
 
Автор
S

smsgeorge

Новичок
Сообщения
63
Репутация
0
filautdinov
не для записи. Просто не знаю как дерево поинтов реализовать.
 

filautdinov

Знающий
Сообщения
96
Репутация
9
smsgeorge сказал(а):
filautdinov
не для записи. Просто не знаю как дерево поинтов реализовать.
Код:
;  оффсеты пример использования
;~  Global $sOffsetWallHack[4]
;~  $sOffsetWallHack[0] = 0
;~  $sOffsetWallHack[1] = 0x0   
;~  $sOffsetWallHack[2] = 0x3c0 
;~  $sOffsetWallHack[3] = 0x5c
 

gmaxru

Новичок
Сообщения
7
Репутация
4
Привет. Разобрались? Могу я поинтересоваться какие у вас дальнейшие задумки?

Имеются исходники программки для измерения скорости передвижения в игре, думаю добавить чтение офсетов HP/MP будет не трудно.

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

Можем вместе поработать над реализацией совместных проектов и задумок.
 
Верх