А может я просто не корректно указал?Ведь у меня указан лишь адрес(поинтер) без офсета....хотя и найти его не представляется возможным,ибо текст не меняется(ник,раса и тп и тд)
Последний раз редактировалось Relli; 30.03.2012 в 21:55.
Мои попытки найти постоянный адрес на любой значений(опыт,кол-во денег,хп) увенчались фейлом)))Находит на 1 раз,при рестарте значения теряются....пробывал по таргету...там интересная вещь,адреса всегда начинаются на "28" и даже когда моб умирает,остается(WoW))но опять же,рестарт и фейл...хочется чтобы знающие люди подсказали,как найти постоянный адрес в онлайн игре,где ты не сервер)
Вопрос тут не в том ты сервер или нет. Адресация делится на DMA (динамическое выделение памяти) и не DMA (соответственно статическое выделение памяти).
В DMA программах после перезагрузки меняются указатели на адреса.
Вообще могу посоветовать почитать статьи, из указанных в моей подписи, написаны они под Perfect World но это не критично.
________________
Ни одно доброе дело не остается безнаказанным.
FarmHitman1,это на текущее хп
[Ссылки могут видеть только зарегистрированные пользователи. ]
Цитата:
procedure TForm1.Button1Click(Sender: TObject);
var
H : hwnd;
HandleProc,b,Pid : integer;
rw : dword;
const adress = $35D9D128;
begin
h := FindWindow(nil,'World of Warcraft');
If h = 0 then
MessageDlg('Вруби Wow!', mtwarning,[mbOK],0)
else
GetWindowThreadProcessId(H,@Pid);
HandleProc := OpenProcess(PROCESS_ALL_ACCESS,False,Pid);
ReadProcessMemory(HandleProc,ptr(adress),@b,4,rw);
Memo1.Lines.add(inttostr(b));
end;
Последний раз редактировалось Relli; 31.03.2012 в 22:00.
Ramsteins, в WoW то все просто, значение хп известно, но у меня то в игре оно скрыто)) В том то вся и проблема, получается находить хп только 1 моба, на таргет не реагирует...
получается находить хп только 1 моба, на таргет не реагирует...
Я не уверен, но может WoW не пишет хп моба в таргете отдельно, а просто добавляет флаг таргета в структуру этого моба в общем списке мобов на радаре?
Цитата:
Сообщение от Ramsteins
procedure TForm1.Button1Click(Sender: TObject);
var
Address : integer;
begin
address := $00C79D18 ;
HandleWindow := FindWindow(nil,WindowTitle);
If HandleWindow = 0 then
begin
MessageDlg('Запусти Wow!', mtwarning,[mbOK],0);
end;
GetWindowThreadProcessId(HandleWindow,@ProcessId);
HandleProc := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory(HandleProc,ptr(address),@b,12,re adwrite);
Memo1.Lines.add(b);
end;
Немного неправильно использована конструкция if..then. Правильнее будет так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Address : integer;
begin
address := $00C79D18 ;
HandleWindow := FindWindow(nil,WindowTitle);
If HandleWindow = 0 then
begin
MessageDlg('Запусти Wow!', mtwarning,[mbOK],0);
end
Else
begin
GetWindowThreadProcessId(HandleWindow,@ProcessId);
HandleProc := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory(HandleProc,ptr(address),@b,12,readwrite);
Memo1.Lines.add(b);
end;
end;
Таким образом мы не выполняем лишнего при отсутствии окна WoW.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.