[Статья] Пишем простой Auto-Potter для Perfect World [Delphi 7] - Страница 3 - Zhyk.Ru Forums
Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.Ru LIVE! Реклама на Zhyk.Ru Доска почета top.zhyk.ru (beta) Премиум-аккаунт

Пишем простой Auto-Potter для Perfect World [Delphi 7]

-

Разработка ПО для Perfect World

- Бюро разработчиков Zhyk.Ru: создание ботов, снифферов и прочих программ для Perfect World

Ответ
 
Опции темы Опции просмотра
Старый 15.02.2013, 15:49   #31
 Разведчик
Аватар для Gorrilaz
 
Gorrilaz скоро будет известенGorrilaz скоро будет известенGorrilaz скоро будет известенGorrilaz скоро будет известен
Регистрация: 23.06.2009
Сообщений: 38
Популярность: 392
Сказал(а) спасибо: 7
Поблагодарили 8 раз(а) в 2 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Цитата:
Сообщение от Хакерок:)Посмотреть сообщение
Skuka.95 тебе уже ответил, но если хочешь узнать подробнее, то тут тема TBX1n. Оффсеты там старые, но проще понять всё, что касается их.
BA - BaseAddress - Базовый адрес
GA - GameRun - начало игровой структуры
GA = [BA] + $1C
Структура игрока: [GA] +$34
Ну и следовательно значение ХП: [[[GA] + $34] + $490]

Понимаю, что просьба не оригинальная, но всё же, не могли бы Вы подсказать эти значения для текущей версии.
Код в принципе мне понятен, правлю под свои нужды, понемногу раздираюсь, но много вещей специфических на мой взгляд, в которых я пока не сильно ориентируюсь (оффсеты, инжекты).

P.S.
Если есть принципиальные вещи необходимые к изучению по этому поводу, подскажите.

Последний раз редактировалось Gorrilaz; 17.02.2013 в 03:25.
  Ответить с цитированием
Старый 01.08.2013, 01:46   #32
 Разведчик
Аватар для JeckAtlas
 
JeckAtlas никому не известный тип
Регистрация: 19.07.2013
Сообщений: 11
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Цитата:
Сообщение от GorrilazПосмотреть сообщение
Понимаю, что просьба не оригинальная, но всё же, не могли бы Вы подсказать эти значения для текущей версии.
Код в принципе мне понятен, правлю под свои нужды, понемногу раздираюсь, но много вещей специфических на мой взгляд, в которых я пока не сильно ориентируюсь (оффсеты, инжекты).

P.S.
Если есть принципиальные вещи необходимые к изучению по этому поводу, подскажите.

http://zhyk.ru/forum/showthread.php?t=287321 Дальше поймешь.
У меня вопрос, как заставить "бота" нажимать клавишу, которую он получает из СomboBox?
  Ответить с цитированием
Старый 01.08.2013, 19:08   #33
 Разведчик
Аватар для foradey83
 
foradey83 никому не известный тип
Регистрация: 01.08.2013
Сообщений: 6
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Помогите если сможете. Весь интернет облазил но решения не нашел. При выводе числового значения все получаетсяю но при выводе текстового отображаются цифры.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IdUDPServer, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient,
StdCtrls, ComCtrls, ExtCtrls, Gauges;

type
TForm1 = class(TForm)
Gauge1: TGauge;
Gauge2: TGauge;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
wideChars : array[0..11] of WideChar;
myString : String;
Form1: TForm1;
i,rwWord;
ch:WideChar;
wch:array[0..255] of WideChar;
KlientWindow:HWND; //Handle êëèåíòà
ProcessId:Integer;
hProcess:Integer; //Èäåíòèôèêàòîð îáúåêòà
HPMinValue:Integer; //Ìèíèìàëüíîå çíà÷åíèå ÕÏ (èç Edit1)
MPMinValue:Integer; //Ìèíèìàëüíîå çíà÷åíèå ÌÏ (èç Edit2)
L:Integer; // óðîâ
Nik:string; //íèê
M:Integer; //áàáëî

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
KlientWindow := FindWindow(nil, PChar('Perfect World')); //Íàõîäèì Handle îêíà
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Ïîëó÷àåì È.Ï.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); //Îòêðûâàåì ïðîöåññ ñ âîçìîæíîñòüþ çàïèñè
HPMinValue := StrToInt(Edit1.Text);
MPMinValue := StrToInt(Edit2.Text);
Timer1.Enabled := True;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := False;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var HP,HPMax,MP,MPMax:Integer;
WHP,WHPMax,L,WMP,WMPMax,Lvl,Nikname,Nik,M,Money,No BWord;
begin
try //Íà âñÿêèé ñëó÷àé çàêëþ÷àåì â try...except, äàáû â ñëó÷àé ðåëîãà íå çàñûïàòü ïîëüçîâàòåëÿ îøèáêàìè
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB);
ReadProcessMemory (hProcess, Pointer(WHP+$0494), @WHP, sizeof(WHP), NoB); //×èòàåì çíà÷åíèå HP
HP := Integer(WHP); //Ïåðåâîäèì Integer
ReadProcessMemory (hProcess, Pointer($00B9029C), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$34), @WHPMax, sizeof(WHPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WHPMax+$04DC), @WHPMax, sizeof(WHPMax), NoB); //×èòàåì çíà÷åíèå MaxHP
HPMax := Integer(WHPMax); //Ïåðåâîäèì Integer
ReadProcessMemory (hProcess, Pointer($00B9029C), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$34), @WMP, sizeof(WMP), NoB);
ReadProcessMemory (hProcess, Pointer(WMP+$0498), @WMP, sizeof(WMP), NoB); //×èòàåì çíà÷åíèå MP
MP := Integer(WMP); //Ïåðåâîäèì Integer
ReadProcessMemory (hProcess, Pointer($00B9029C), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$34), @WMPMax, sizeof(WMPMax), NoB);
ReadProcessMemory (hProcess, Pointer(WMPMax+$04E0), @WMPMax, sizeof(WMPMax), NoB); //×èòàåì çíà÷åíèå MaxMP
MPMax := Integer(WMPMax); //Ïåðåâîäèì Integer
Gauge1.Progress := round(HP * 100 / HPMax); //Ïðèñâàèâàåì ïðîöåíòíîå çíà÷åíèå HP Gauge1
Gauge2.Progress := round(MP * 100 / MPMax); //Ïðèñâàèâàåì ïðîöåíòíîå çíà÷åíèå MP Gauge2
ReadProcessMemory (hProcess, Pointer($00B9029C), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$34), @Lvl, sizeof(Lvl), NoB);
ReadProcessMemory (hProcess, Pointer(Lvl+$048C), @Lvl, sizeof(Lvl), NoB);
L := Integer(Lvl); //Ïåðåâîäèì Integer
Label1.Caption := IntToStr(L);
ReadProcessMemory (hProcess, Pointer($00B9029C), @Money, sizeof(Money), NoB);
ReadProcessMemory (hProcess, Pointer(Money+$34), @Money, sizeof(Money), NoB);
ReadProcessMemory (hProcess, Pointer(Money+$0560), @Money, sizeof(Money), NoB) ;
M := Integer(Money) ; //Ïåðåâîäèì Integer
Label4.Caption := IntToStr(M);
================================================== ================================
ReadProcessMemory (hProcess, Pointer($00B9029C), @Nikname, sizeof(Nikname), NoB);
ReadProcessMemory (hProcess, Pointer(Nikname+$34), @Nikname, sizeof(Nikname), NoB);
ReadProcessMemory (hProcess, Pointer(Nikname+$0740), @Nikname, sizeof(Nikname), NoB);

//Nik := Nikname=String; //Ïåðåâîäèì Integer

Label2.Caption := IntToStr (Nikname) ;
================================================== ================================= как пологаю ошибка в выводе Label2.Caption := ???? и что далее инет не помог все примеры простые

EXCEPT
end;
end.

в Label2 отображается просто цифра 6 и все.

Последний раз редактировалось foradey83; 01.08.2013 в 19:12.
  Ответить с цитированием
Старый 21.09.2013, 02:52   #34
 Пехотинец
Аватар для sedrik1992
 
sedrik1992 никому не известный тип
Регистрация: 03.02.2013
Сообщений: 58
Популярность: 10
Сказал(а) спасибо: 11
Поблагодарили 24 раз(а) в 11 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Спасибо! Всё работает. Только оффсеты поменять
Вложения
Тип файла: rar Индикатор ХП и МП.rar (4.1 Кб, 41 просмотров)
________________
World ID | Кубометр
  Ответить с цитированием
Старый 15.10.2013, 19:42   #35
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Добрый вечер. Недавно начал изучать Delphi. Перелопатив кучу тем на форуме решил попробовать свои силы, сначала с малого. Пытаюсь прочитать имя персонажа.

procedure TForm1.Button1Click(Sender: TObject);
var HP,HPMax,MP,MPMax:Integer;
WHP,WHPMax,WMP,WMPMax,NoB, NikNameWord;
KlientWindow:HWND; //Handle клиента
ProcessId:Integer;
hProcess:Integer; //Идентификатор объекта
begin
KlientWindow := FindWindow(nil, PChar('Perfect World')); //Находим Handle окна
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем И.П.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory (hProcess, Pointer($C38B6C), @WHP, sizeof(WHP), NoB); // base adress
ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB); // ba+1c
ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB); // ba+1c
ReadProcessMemory (hProcess, Pointer(WHP+$20), @WHP, sizeof(WHP), NoB); // ba+1c+1c+20
ReadProcessMemory (hProcess, Pointer(WHP+$688), @WHP, sizeof(WHP), NoB); //Имя персонажа должно быть здесь?
ShowMessage(Inttostr(WHP));
end;

по итогу получаю просто набор цифр.
Прошу подсказать что я делаю не верно, может считываю не из тех адресов?
Заранее огромное спасибо.

Добавлено через 3 часа 23 минуты
Вот, еще покопался на форуме, в итоге через CheatEngine [[[[[00C38B6C]+$1C]+$34]+$688]+0] увидел имя персонажа. Изменил адреса в коде на верные, но в итоге все равно не выводит ник. В этой тебе говорилось уже о никах http://zhyk.ru/forum/showthread.php?t=116019, в итоге сделал вот так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Gauges, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Gauge1: TGauge;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;


implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var WHP,NoB Word;
name : array [0..32] of widechar;
KlientWindow:HWND; //Handle клиента
ProcessId:Integer;
hProcess:Integer; //Идентификатор объекта


begin
KlientWindow := FindWindow(nil, PChar('Perfect World')); //Находим Handle окна
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем И.П.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
ReadProcessMemory (hProcess, Pointer($00C38B6C), @WHP, sizeof(WHP), NoB); // base adress
ReadProcessMemory (hProcess, Pointer(WHP+$1C), @WHP, sizeof(WHP), NoB); // ba+$1c
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB); // ba+$34
ReadProcessMemory (hProcess, Pointer(WHP+$688), @WHP, sizeof(WHP), NoB); // $ba+1c+$34+$688
ReadProcessMemory (hProcess, Pointer(WHP+$0), @name, 32, NoB); //$ba+1c+$34+$688+0 В CheatEngine имя перса
showmessage(name);
end;

end.
Выдает некую букву, которой в имени перса нет. Сам думаю что все сделано верно, кроме вывода полученных данных. Прошу помощи.

Последний раз редактировалось Forester!; 15.10.2013 в 23:06. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 07.11.2013, 01:24   #36
 Разведчик
Аватар для mirka23
 
mirka23 никому не известный тип
Регистрация: 07.11.2013
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Цитата:
Сообщение от VeTaL_UAПосмотреть сообщение
С каким цветом текста? Что переборщил? Что-то я не въехал...

мне твой оранжевый игру халву напомнил) всё в тех же тонах )))
  Ответить с цитированием
Старый 11.11.2013, 07:44   #37
 Пехотинец
Аватар для _DVD_
 
_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе_DVD_ лучик света в грозовом небе
Регистрация: 17.09.2010
Сообщений: 66
Популярность: 701
Сказал(а) спасибо: 32
Поблагодарили 63 раз(а) в 46 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Дайте совет, по поводу такой ситуации. Персонаж в стане/несогласке и уровень хп ниже граничных, автопот шлет пакет или жмет кнопку на юзание имунки. Но из-за стана/несогл ее использование невозможно. Так вот если в эти секунды персонажа убивают и он ресается, то имунка юзается при респе.. Что не корректно. Как можно правильно обыграть эту ситуацию?
________________
© Mel
  Ответить с цитированием
Старый 27.12.2013, 13:23   #38
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

на RAD XE5 компилил кто-либо это?
насколько знаю, с вводом поддержки 64 разрядов, надо NoB описывать как

var
NoB: SIZE_T

Добавлено через 2 часа 37 минут
ради интереса решил запихнуть все в XE5 и...что-то мне ничего не вернулось))) в чем ошибка? не отлаживал правда еще

Код:
Game_Address : integer = $0C392CC;
//Смещение HostPlayerStuct относительно GameRunAddress
 host_player_struct_offset : integer = $34;
//Смещение к здоровью персонажа
 host_player_hp_offset : integer = $4A8;
hProcess: Integer;
KlientWindow: HWND; //Handle клиента
ProcessId: Integer;


Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
KlientWindow := FindWindow(nil, PChar('Perfect World')); //Находим Handle окна
GetWindowThreadProcessId(KlientWindow,@ProcessId); //Получаем Ид.П.
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId); //Открываем процесс с полным доступом
Timer1.Enabled := True;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
 var HP,HPMax,MP,MPMax:Integer;
    WHP,WHPMax,WMP,WMPMax:DWord;
    NoB: SIZE_T;
begin
  try //заключаем в try...except, дабы не засыпать пользователя ошибками
    ReadProcessMemory (hProcess, Pointer(Game_Address), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+host_player_struct_offset), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+host_player_hp_offset), @WHP, sizeof(WHP), NoB);
    //Читаем значение HP
    HP := Integer(WHP); //Переводим Integer
  except
    Label1.Caption := IntToStr(HP);
  end;

end;

Последний раз редактировалось scitelz; 27.12.2013 в 16:03. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 28.12.2013, 17:25   #39
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

scitelz, вы привелегии получили? в рад 2\5 без получения привелегий у меня такие тесты проваливались)
  Ответить с цитированием
Старый 11.01.2014, 02:58   #40
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

ну вот, праздники и закончились)) всех с наступившим.

Цитата:
Сообщение от ToRcH2565Посмотреть сообщение
scitelz, вы привелегии получили? в рад 2\5 без получения привелегий у меня такие тесты проваливались)

Да, в XE 5 все получилось. С привилегиями, в принципе, каких-либо проблем не возникло, а в сообщении выше сам сглупил - в блоке try-except вывод не сделан. Спать, видать, надо чаще и больше.

Код:
  try //заключаем в try...except, дабы не засыпать пользователя ошибками
    ReadProcessMemory (hProcess, Pointer(Game_Address), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+host_player_struct_offset), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+host_player_hp_offset), @WHP, sizeof(WHP), NoB);
    //Читаем значение HP
    HP := Integer(WHP); //Переводим Integer
    Label1.Caption := IntToStr(HP);
  except
    ShowMessage('капец');
  end;

Последний раз редактировалось scitelz; 11.01.2014 в 13:05. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 05.02.2014, 16:34   #41
 Разведчик
Аватар для dlev2
 
dlev2 никому не известный тип
Регистрация: 28.02.2012
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

объясните в чем может быть ошибка.
Код:
ReadProcessMemory(hProcess,Pointer(strtoint(Unit2.Form2.edit_game_adress.text)),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$20+$14),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$0494),@buf,SizeOf(buf),BytesCount);
ShowMessage(IntToStr(integer(buf)));
пробовал так, выводит всегда 1 число 6890496
написано по примеру этого исходника

где edit_game_adress.text это game_adress на текущий момент(клиент 1.5.0)
GameAdress=00C392CC


так же пробовал вот так
Код:
ReadProcessMemory(hProcess,ptr(strtoint(Unit2.Form2.edit_base_adress.text)),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$20+$14),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$0494),@buf,SizeOf(buf),BytesCount);
ShowMessage(IntToStr(integer(buf)));
где собственно edit_base_adress.text это BaseAdress=00C38B6C
вот это выдает 6890496 (тоже самое, но почему!? ведь 00C38B6C+1С <> 00C392CC)

либо я не понимаю как это делается, я конечно первый день пытаюсь писать с офсетами, но перечитал уже кучу материала на жуке(про данный случай).

ХП моего персонажа должно быть 1310
или за этим числом спрятано то что мне нужно? (хотя если хп не фул число показывает тоже)

заранее спасибо.
PS, не трите мои посты, правда хочу понять что тут не так. это не флуд
_____________________
пока ел читал форум нашел вот такую надпись
scitelz:
Цитата:
Сообщение от scitelzПосмотреть сообщение
host_player_hp_offset : integer = $4A8;

спасибо вам добрый человек.

Последний раз редактировалось dlev2; 05.02.2014 в 17:46.
  Ответить с цитированием
Старый 23.07.2014, 20:08   #42
 Пехотинец
Аватар для Хакерок:)
 
Хакерок:) на правильном путиХакерок:) на правильном пути
Регистрация: 06.07.2009
Сообщений: 81
Популярность: 126
Сказал(а) спасибо: 32
Поблагодарили 93 раз(а) в 36 сообщениях
Отправить сообщение для Хакерок:) с помощью ICQ
 
Post Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Цитата:
Сообщение от dlev2Посмотреть сообщение
объясните в чем может быть ошибка.
Код:
ReadProcessMemory(hProcess,Pointer(strtoint(Unit2.Form2.edit_game_adress.text)),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$20+$14),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$0494),@buf,SizeOf(buf),BytesCount);
ShowMessage(IntToStr(integer(buf)));
пробовал так, выводит всегда 1 число 6890496
написано по примеру этого исходника

где edit_game_adress.text это game_adress на текущий момент(клиент 1.5.0)
GameAdress=00C392CC


так же пробовал вот так
Код:
ReadProcessMemory(hProcess,ptr(strtoint(Unit2.Form2.edit_base_adress.text)),@buf,4,BytesCount);
ReadProcessMemory(hProcess,ptr(buf+$1C),@buf,4,BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$20+$14),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$0494),@buf,SizeOf(buf),BytesCount);
ShowMessage(IntToStr(integer(buf)));
где собственно edit_base_adress.text это BaseAdress=00C38B6C
вот это выдает 6890496 (тоже самое, но почему!? ведь 00C38B6C+1С <> 00C392CC)

либо я не понимаю как это делается, я конечно первый день пытаюсь писать с офсетами, но перечитал уже кучу материала на жуке(про данный случай).

ХП моего персонажа должно быть 1310
или за этим числом спрятано то что мне нужно? (хотя если хп не фул число показывает тоже)

заранее спасибо.
PS, не трите мои посты, правда хочу понять что тут не так. это не флуд
_____________________
пока ел читал форум нашел вот такую надпись
scitelz:

спасибо вам добрый человек.

Не думаю что ответ уже будет полезен вам, но возможно будет полезен другим посетителям темы. Извиняюсь что не смог ответить, в последний раз заходил в тему очень давно.

В первом примере сразу бросается в глаза строка:
Код:
ReadProcessMemory(hProcess,Pointer(buf+$20+$14),@buf,SizeOf(buf),BytesCount);
Тут стоит посмотреть тему TBX1n про определение понятия оффсетов, там вы бы заметили что читать последовательно нужно всегда:
Код:
ReadProcessMemory(hProcess,Pointer(buf+$20),@buf,SizeOf(buf),BytesCount);
ReadProcessMemory(hProcess,Pointer(buf+$14),@buf,SizeOf(buf),BytesCount);
Ну и вторую ошибку вы заметили сами, но её причина скорее невнимательность, нежели незнание. Желаю удачи!)
Надеюсь что, даже если ответ автору уже не нужен, он сможет пригодиться другим пользователям.

Последний раз редактировалось Хакерок:); 23.07.2014 в 20:22.
  Ответить с цитированием
Старый 18.08.2014, 14:39   #43
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

а чего такого намудрили, что дельфовый вариант перестал работать? Адреса проверял на C# там нормально читает.
Код:
const
BaseAddress = $0C9DFAC;
GameRun = $0C9E74C;
HostPlayerStruct = $30;
Hp              = $4A8;
Код:
var
  HP : Integer;
  WHP : DWord;
  NoB : Size_T;
  KlientWindow: HWND;
  ProcessId : integer;
begin
KlientWindow := FindWindow(nil, PChar('Perfect World')); 
GetWindowThreadProcessId(KlientWindow,@ProcessId); 
button1.Caption := inttostr(processid);
hProcess := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);

try
    ReadProcessMemory (hProcess, Pointer(GameRun), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+hostplayerstruct), @WHP, sizeof(WHP), NoB);
    ReadProcessMemory (hProcess, Pointer(WHP+hp), @WHP, sizeof(WHP), NoB);
    HP := Integer(WHP); //Переводим Integer
    Label2.Caption := IntToStr(HP);
  except
end;

end;
ошибки осознаны и исправлены: hostplayerstruct и hp следует заменить на прямые значения ($30 и $4A8 соответственно)

Последний раз редактировалось scitelz; 18.08.2014 в 14:48.
  Ответить с цитированием
Старый 18.08.2014, 16:40   #44
 Пехотинец
Аватар для iGesha
 
iGesha скоро будет известенiGesha скоро будет известенiGesha скоро будет известен
Регистрация: 04.12.2013
Сообщений: 66
Популярность: 228
Сказал(а) спасибо: 36
Поблагодарили 42 раз(а) в 24 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

Цитата:
Сообщение от scitelzПосмотреть сообщение
ошибки осознаны и исправлены: hostplayerstruct и hp следует заменить на прямые значения ($30 и $4A8 соответственно)

А может компилятор-таки думает, что HostPlayerStruct и hostplayerstruct - это разные вещи? Аналогично с Hp и hp.
Ведь с константой GameRun нет проблем, т.к. она и объявляется и используется в одном и том же написании...
________________
Кто к нам с чем зачем, тот от того и того...
[Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ] [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 18.08.2014, 17:23   #45
 Разведчик
Аватар для scitelz
 
scitelz никому не известный тип
Регистрация: 25.01.2013
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 7
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Пишем простой Auto-Potter для Perfect World [Delphi 7]

del

Последний раз редактировалось scitelz; 20.08.2014 в 16:05.
  Ответить с цитированием
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение Auto Perfect World Fedos1977 Общение и обсуждение Perfect World 95 11.12.2011 18:00
[Программа] Auto Perfect World semoder Боты, скрипты и прочий софт для Perfect World 1 22.11.2010 10:50
[Программа] Perfect World Auto-login v.1.1. KloneB@DGuY Боты, скрипты и прочий софт для Perfect World 5 25.04.2010 15:50

www.webmoney.ru
Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 02:39.

Пишите нам: forum@zhyk.ru
Copyright © 2019 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net