Что нового

как указать поинтер для _WinAPI_ReadProcessMemory?

eGenius

Новичок
Сообщения
3
Репутация
1
как указать поинтер для _WinAPI_ReadProcessMemory? нашел пример - он работает на обычные адреса - что ессесно не катит - тк при перегрузке проги адрес сменится... те нужен поинтер... нашел пример:

Код:
#include <winapi.au3>
Global Const $PROCESS_VM_OPERATION = (0x0008)
Global Const $PROCESS_VM_READ = (0x0010)

Global $Process="Tutorial-i386.exe"
Global $Pointer = 0x00690380; replace of course
;Global $Pointer = 0x01897778; replace of course

$handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process))

$s=DllStructCreate("int")
Local $read
_WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),8,$read)

MsGbox(0,"Base",DllStructGetData($s,1))

_WinAPI_CloseHandle($handle)


работает отлично - но только на простые адреса... а как ему указать - чтоб он лез именно по поинтеру?

ps: nomadmemory у меня не пашет - тк win7x64
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код autoit надо заключать в тег autoit.
Код:
#include <winapi.au3>
Global Const $PROCESS_VM_OPERATION = (0x0008)
Global Const $PROCESS_VM_READ = (0x0010)

Global $Process=WinGetProcess('FTL', '')
Global $Pointer = 0x006E79AC; replace of course
;Global $Pointer = 0x01897778; replace of course

$handle=_WinAPI_OpenProcess(BitOR($PROCESS_VM_OPERATION,$PROCESS_VM_READ),False,ProcessExists($Process))

$s=DllStructCreate("int")
Local $read
_WinAPI_ReadProcessMemory($handle,$Pointer,DllStructGetPtr($s),8,$read)
_WinAPI_ReadProcessMemory($handle,DllStructGetData($s,1)+ 880,DllStructGetPtr($s),8,$read)

MsGbox(0,"Base",DllStructGetData($s,1))

_WinAPI_CloseHandle($handle)
 
Автор
E

eGenius

Новичок
Сообщения
3
Репутация
1
поправился, но к сожалению результат тотже - лезет по обычному адресу
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Проверил на win7x64 - nomadmemory работает так же, как на xp. Твоя проблема в кривых руках - иди сюда и правь их.
 
Автор
E

eGenius

Новичок
Сообщения
3
Репутация
1
грубо, грубо... но всеравно спасибо. мне просто не хватало одной строчки кода - нигде такого не видел - хотя перерыл много форумов...

вот пример кода - мб кому пригодится

Код:
#include <NoMadMemory.au3>

$mid = _MemoryOpen(ProcessExists("Tutorial-i386.exe"))
$playerCount = _MemoryRead(_MemoryRead(0x00690380, $mid) + 0x0, $mid)
_MemoryClose($mid)

MsgBox(0,"",$playerCount)
 
Верх