Что нового

[Процессы] Как средстваим autoit вычислить значение по адрессу в памяти?

alt-andrew

Новичок
Сообщения
19
Репутация
2
Суть в следующем-С помощью CheatEngine выяснил,что значение находится по адресу silver.dll+1D2C90.Как узнать начальный(базовый) адресс этой dll?
 
Автор
A

alt-andrew

Новичок
Сообщения
19
Репутация
2
Re: [Процессы] Как средстваим autoit вычислить начальный адресс .dll?

Вот нашел функцию которая возвращает адресс той самой dll+offset:
Код:
Func _MemoryModuleGetBaseAddress($iPID, $sModule)
    If Not ProcessExists($iPID) Then Return SetError(1, 0, 0)
    
    If Not IsString($sModule) Then Return SetError(2, 0, 0)
    
    Local   $PSAPI = DllOpen("psapi.dll")
    
    ;Get Process Handle
    Local   $hProcess
    Local   $PERMISSION = BitOR(0x0002, 0x0400, 0x0008, 0x0010, 0x0020) ; CREATE_THREAD, QUERY_INFORMATION, VM_OPERATION, VM_READ, VM_WRITE
    
    If $iPID > 0 Then
        Local $hProcess = DllCall("kernel32.dll", "ptr", "OpenProcess", "dword", $PERMISSION, "int", 0, "dword", $iPID)
        If $hProcess[0] Then
            $hProcess = $hProcess[0]
        EndIf
    EndIf
    
    ;EnumProcessModules
    Local   $Modules = DllStructCreate("ptr[1024]")
    Local   $aCall = DllCall($PSAPI, "int", "EnumProcessModules", "ptr", $hProcess, "ptr", DllStructGetPtr($Modules), "dword", DllStructGetSize($Modules), "dword*", 0)
    If $aCall[4] > 0 Then
        Local   $iModnum = $aCall[4] / 4
        Local   $aTemp
        For $i = 1 To $iModnum
            $aTemp =  DllCall($PSAPI, "dword", "GetModuleBaseNameW", "ptr", $hProcess, "ptr", Ptr(DllStructGetData($Modules, 1, $i)), "wstr", "", "dword", 260)
            If $aTemp[3] = $sModule Then
                DllClose($PSAPI)
                Return Ptr(DllStructGetData($Modules, 1, $i))
            EndIf
        Next
    EndIf
    
    DllClose($PSAPI)
    Return SetError(-1, 0, 0)
    
EndFunc
Вот теперь возникает такой вопрос-Как сделать чтоб она возвращала значение по найденному адрессу?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Если ты уже имеешь фактический адрес где расположено нужное значение то пользуй NomadMemory
 

xamd

AION bot developer
Сообщения
66
Репутация
24
Я решал подобную задачу для AION.
Можешь посмотреть здесь: http://autoit-script.ru/index.php?topic=1600.0

Для начала надо подключить библиотеку
Код:
#include <MemoryModuleGetBaseAddress.au3>


Прикрепил мою библиотеку(она чуть-чуть редактирована)
 
Автор
A

alt-andrew

Новичок
Сообщения
19
Репутация
2
Belfigor сказал(а):
Если ты уже имеешь фактический адрес где расположено нужное значение то пользуй NomadMemory
Где можно про NomadMemory посмотреть информацию?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
NomadMemory прикрепил ниже, примеры использования ищи на форуме, они не однократно выкладывались.
 
Верх