В WoW нет хп в таргете,он дает мобу адрес(динамический) и в нем хранятся его кол-во хп.
К любому динамическому адресу можно проложить путь из оффсетов, начиная с базового адреса. Надо только понять, как всё задумано в самой игре
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
Ramsteins, текст нужно читать циклом. В твоём примере ты читаешь только 1 символ.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
VeTaL_UA, считываю я правильно,могу даже скинуть несколько примеров,где я считываю подобным методом текст и все гуд...
Даже если сделать так,то 0 эффекта:
Код:
repeat
ReadProcessMemory(HandleProc,ptr(i),@b[p],sizeof(b[p]),rw);
inc(p);
i := i + sizeof(b[p]);
until (ord(p)=0) or (p >=255);
Memo1.Lines.add(b);
Последний раз редактировалось Relli; 01.04.2012 в 15:58.
могу даже скинуть несколько примеров,где я считываю подобным методом текст и все гуд...
Считываешь текст без цикла? Скинь, чё. Только не нужно кидать примеры, где читается одна буква
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
var
Nick : array [0..11] of Char;
rw : dword;
b : integer;
begin
adress := $028fc0a4;
b := 0;
ReadProcessMemory(HandleProc,ptr(adress),@b,Sizeof(b),rw);
ReadProcessMemory(HandleProc,ptr(b + $3764),@b,Sizeof(b),rw);
ReadProcessMemory(HandleProc,ptr(b + $2b4),@Nick,12,rw);
Label12.Caption := Nick;
[Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось Relli; 01.04.2012 в 23:05.
Круто, чё Только вот в моём примере читается Unicode, а данный пример его не прочитает Да и лишнего не читает.
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.
procedure TForm1.Timer1Timer(Sender: TObject);
var
hWin: hWnd;
ProcId: Cardinal;
hProc: THandle;
AdressW: dword; //сюда прочитаем адрес из указателя.
Adress: dword;
readwrite: cardinal;
begin
AdressW:=StrToInt(pchar('$'+PointerEdit.Text));
hWin := StrToInt(hWinedit.Text);
GetWindowThreadProcessId(hWin, @ProcId);
hProc := OpenProcess(Process_All_Access, False, ProcId);
ReadProcessMemory(hProc, pointer(AdressW), @Adress, 4, readwrite); //Читаем адрес из указателя
ReadProcessMemory(hProc, pointer(Adress+$170), @Adress, 4, readwrite); //Прибавляем к адресу смещение нашего значения
ReadProcessMemory(hProc, pointer(Adress+$380), @Adress, 4, readwrite); //Прибавляем к адресу смещение нашего значения
ReadProcessMemory(hProc, pointer(Adress+$214), @Adress, 4, readwrite); //Прибавляем к адресу смещение нашего значения
ReadProcessMemory(hProc, pointer(Adress+$34), @Adress, 4, readwrite); //Прибавляем к адресу смещение нашего значения
ReadProcessMemory(hProc, pointer(Adress+$260), @Adress, 4, readwrite); //Прибавляем к адресу смещение нашего значения
Edit1.Text:=IntToStr(Adress);
CloseHandle(hProc);
end;
Сори уже есть ответ выше) Но этот код под Lazarus)
Добавлено через 12 минут
Кстати есть люди которые дергали значение из Lineagi? Отпишите!
Последний раз редактировалось RenatPro; 23.09.2013 в 07:57.
Причина: Добавлено сообщение
блин, а что-нибудь посложней слабо? добавлялку денег и так каждый сделать сможет..
покажи лучше на примере, как сделать ESP для CS 1.6, как получить 3д координаты игрока в игровом мире.
Cs не знаю а вот в l2 пишешь в игре /loc смотришь в чате координаты X это первые циферки в чате и вбиваешь в артмани или подобную прогу выбираешь искать с точкой дальше сами разберетесь))
var
Nick : array [0..11] of Char;
rw : dword;
b : integer;
begin
adress := $028fc0a4;
b := 0;
ReadProcessMemory(HandleProc,ptr(adress),@b,Sizeof(b),rw);
ReadProcessMemory(HandleProc,ptr(b + $3764),@b,Sizeof(b),rw);
ReadProcessMemory(HandleProc,ptr(b + $2b4),@Nick,12,rw);
Label12.Caption := Nick;
[Ссылки могут видеть только зарегистрированные пользователи. ]
Почисти есть лишнее не стал редактировать дернул из своего исходника
Цитата:
//Получаем текст из памяти
procedure TForm1.Timer2Timer(Sender: TObject);
var
TextProc, PID, numberRead : DWORD;
Texthwnd: THandle;
TextIpBuf: PWideChar;
Textlen: integer;
TextipBase: ^dword;
before, after: string;
begin
Texthwnd:=StrToInt(HWND.Text);//окно
GetWindowThreadProcessId(Texthwnd, @PID);
TextProc:=OpenProcess(PROCESS_VM_READ, False, PID);
Textlen := StrToInt(PAnsiChar(SpinEdit1.Text));
TextipBuf := AllocMem(Textlen);
TextipBase:=pointer(StrToInt(PAnsiChar('$' + Edit1.Text))); // наш адресс
ReadProcessMemory(TextProc, TextipBase, Textipbuf, Textlen, numberRead);//Читаем адрес из указател
before:=AnsiToUtf8(string(Textipbuf)); //текст из памяти
memo1.text := StringReplace(before, ' ', #13#10,
[rfReplaceAll, rfIgnoreCase]);
CloseHandle(TextProc);
end;