PDA

Просмотр полной версии : Чтение памяти GF [Delphi]


ZolanPro
18.06.2011, 11:25
Прочитал темку (http://coderx.ru/showthread.php?t=4868) решил написать аналог АЦП (существующие не работают, т.к. на сервере защита)
Сделал всё получил следующий код:
var
bufferaddress : pointer;
HP_Max,temppointer: integer;
tempBuffer: array [0..3] of byte;
temp: byte;
car:Cardinal;
ipbuf,PID,hProcess,BytesCount:dword;
begin
car:=0;
showmessage(IntToStr(pHandle));
ReadProcessMemory(pHandle, ptr($7D1C0090), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
ReadProcessMemory(pHandle, ptr(temppointer+$55C), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
ReadProcessMemory(pHandle, ptr(temppointer+$98), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
ReadProcessMemory(pHandle, ptr(temppointer+$64), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
ReadProcessMemory(pHandle, ptr(temppointer+$34), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
ReadProcessMemory(pHandle, ptr(temppointer+$228), @tempBuffer, 4,car);
temppointer:=PInteger(@tempBuffer[0])^;
HP_Max:= temppointer + $22C;
MainForm.Label1.Caption:=IntToStr(HP_Max);

Который упорно не хочет правильно работать.
Пробовал в качестве начального адреса брать $1BFC268 (3D0000 Engine.dll + $0182C268) - не помогло.
Cheat Engine нормально читает и редактирует память (т.е. если даже и есть защита в клиенте то она обходиться, клиент Евро офф Gracia Final)
кто может подсказать в чём ошибка?
Запускаю клиент через свою прогу, чтоб не мучатся с поиском процесса. (к примеру заголовок окна легко меняю).
http://img683.imageshack.us/img683/655/73458136.jpg
Кто может подсказать в чём ошибка?

Morfik
18.06.2011, 15:30
хп,цп и прочее вообще лежит не по фиксированным смещениям

ZolanPro
18.06.2011, 16:01
Проверял. Перезапускал клиент много раз, Cheat Engine стабильно показывает правильные значения с найденным в первый раз смещением.

Morfik
18.06.2011, 16:16
Проверял. Перезапускал клиент много раз, Cheat Engine стабильно показывает правильные значения с найденным в первый раз смещением.

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

ZolanPro
18.06.2011, 16:25
Да читал, но беда в том что на сервере стоит защита, а как перехватывать пакеты на уровне engine.dll , т.е. после защиты - я хз. мб есть у кого какой пример на эту тему?:)

mira
20.06.2011, 14:01
Данные о хп мп итд чара лежит в структуре user адрес которой непостоянен (вероятнее всего он один тока при запуске клиента при определенных условиях)
потом менеджер памяти куданеть его перемещает дефрагментируя например.