Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

И ник персонажа

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 16.10.2013, 23:54   #1
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию И ник персонажа

Всем здравствуйте.
Решил вспомнить молодость и освоить Delphi. Сейчас пытаюсь заставить работать правильно код, который отображает имя персонажа, но как и многие до меня столкнулся с проблемой.
Вот собственно код, я думаю папки без труда узнают свои наработки ))

Код:
unit New;

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 :DWord;
    KlientWindow:HWND; //Handle клиента
    i,ProcessId:Integer;
    hProcess:Integer; //Идентификатор объекта
    str : array [0..255] of char;


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), @str, 32, NoB); // в Cheat Engine тут имя перса
        showmessage(str);
      end;


end.
Если это имеет значение, у меня Win 7 64x и пишу на Delphi 2010.
Программа сейчас выводит иероглифы. Подозреваю что не правильно вывожу полученный результат. Но может дело в чем то другом. Помогите разобраться. Заранее спасибо.

Добавлено через 4 минуты
http://zhyk.ru/forum/showthread.php?t=331413 эту тему читал, почти все взял из нее, но результат нулевой

Последний раз редактировалось Sirioga; 17.10.2013 в 14:17. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.10.2013, 02:28   #2
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от Forester!Посмотреть сообщение
str : array [0..255] of char;

Замените строку на :
str : WideString[255]; {255- пример, читаете 32, ставте 32....}

зы. Неуверен как у вас(D2010), а в (XE2-XE5) String=WideString, Char=WideChar...

pss ReadProcessMemory (hProcess, Pointer(WHP), @str[1], 32, NoB); << над исправить если переменная обьявлена строкой до такого состояния....

Последний раз редактировалось ToRcH2565; 17.10.2013 в 03:04.
  Ответить с цитированием
Старый 17.10.2013, 09:21   #3
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: И ник персонажа

Попробую вечерком, отпишусь.

Цитата:
Сообщение от ToRcH2565Посмотреть сообщение
зы. Неуверен как у вас(D2010), а в (XE2-XE5) String=WideString, Char=WideChar...

что это значит? То что string и widestring одинаковые типы?
  Ответить с цитированием
Старый 17.10.2013, 09:26   #4
-= Мастер Света =-
 Рыцарь-лейтенант
Аватар для Smertig
 
Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(
Регистрация: 31.01.2011
Сообщений: 413
Популярность: 14489
Золото Zhyk.Ru: 300
Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
Отправить сообщение для Smertig с помощью ICQ Отправить сообщение для Smertig с помощью Skype™
 
По умолчанию Re: И ник персонажа

Не все оффсеты шестнадцатиричные. Там где-то видел 1С без $.
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
  Ответить с цитированием
Старый 17.10.2013, 09:50   #5
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от SmertigПосмотреть сообщение
Не все оффсеты шестнадцатиричные. Там где-то видел 1С без $.

И что же это за число 1С такое если не шестнадцатитричное?

Добавлено через 4 минуты
И потом в Cheat Engine смещения я вводил руками ba+1c+34+688+0

Последний раз редактировалось Forester!; 17.10.2013 в 09:54. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.10.2013, 18:08   #6
 Сержант
Аватар для pw.assistant
 
pw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауруpw.assistant излучает ауру
Регистрация: 16.02.2012
Сообщений: 105
Популярность: 651
Сказал(а) спасибо: 19
Поблагодарили 39 раз(а) в 31 сообщениях
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от Forester!Посмотреть сообщение
И что же это за число 1С такое если не шестнадцатитричное?

Литовская еденица - одинс

По теме, мне кажется там не хватат одного ReadProcessMemory, цепочка, если мне память не изменяет $ba+$1c+$34+$688+$0

Код:
        ReadProcessMemory (hProcess, Pointer(WHP+$688), @WHP, sizeof(WHP), NoB); // $ba+1c+$34+$688
        ReadProcessMemory (hProcess, Pointer(WHP), @WHP, sizeof(WHP), NoB); // $ba+1c+$34+$688+0
        ReadProcessMemory (hProcess, Pointer(WHP), @str, 32, NoB); // в Cheat Engine тут имя перса
________________
backup - акт проявления трусости

Последний раз редактировалось pw.assistant; 17.10.2013 в 18:13.
  Ответить с цитированием
Старый 17.10.2013, 18:32   #7
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: И ник персонажа

Ну, долго ли коротко ли, методом тыка, проб и ошибок, родил то что хотел )


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 : DWord;
KlientWindow:HWND; //Handle клиента
ProcessId:Integer; // И.П. процесса
hProcess:Integer; //Идентификатор объекта
str : array [0..32] of widechar; //массив в котором будет содержаться имя персонажа


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 читаем из адреса полученного при чтении base adress + смещение $1c (gameadress)
ReadProcessMemory (hProcess, Pointer(WHP+$34), @WHP, sizeof(WHP), NoB); // ba+$1C+$34 читаем из адреса полученного при чтении gameadress + смещение $34 (структура перса)
ReadProcessMemory (hProcess, Pointer(WHP+$688), @WHP, sizeof(WHP), NoB); // $ba+$1c+$34+$688 вот добрались до указателя на адрес расположения имени перса
ReadProcessMemory (hProcess, Pointer(WHP), @str, 32, NoB); // в Cheat Engine и у нас, тут имя перса
showmessage(str);
end;


end.

А теперь как получилось...

При запуске из оболочки delphi 2010 программа не получала прав администратора на win 7, соответственно не могла открыть процесс Perfect World и прочитать нужные значения памяти.

Поэтому для того чтобы программа работала, необходимо компилированный exe-шник запускать через проводник с правами администратора.
Вот и все. Огромное спасибо всем кто принял посильное участие.

Добавлено через 11 минут
Цитата:
Сообщение от pw.assistantПосмотреть сообщение

По теме, мне кажется там не хватат одного ReadProcessMemory, цепочка, если мне память не изменяет $ba+$1c+$34+$688+$0

Ну на самом деле в Cheat Engine что $ba+$1c+$34+$688+$0, что просто $ba+$1c+$34+$688 - значения одинаковые. Читать нужно именно из адреса, полученного при чтении в $ba+$1c+$34+$688

Последний раз редактировалось Forester!; 17.10.2013 в 18:43. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 17.10.2013, 20:05   #8
Reaper
 Фельдмаршал
Аватар для Dinmaite
 
Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(Dinmaite сломал счётчик популярности :(
Регистрация: 13.08.2009
Сообщений: 1,004
Популярность: 25098
Золото Zhyk.Ru: 350
Сказал(а) спасибо: 110
Поблагодарили 830 раз(а) в 395 сообщениях
Отправить сообщение для Dinmaite с помощью ICQ
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от Forester!Посмотреть сообщение
полученного при чтении в $ba+$1c+$34+$688

Это и есть тот самый +0
  Ответить с цитированием
Старый 20.10.2013, 00:34   #9
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от Forester!Посмотреть сообщение
Поэтому для того чтобы программа работала, необходимо компилированный exe-шник запускать через проводник с правами администратора.

Занятно, на вин хп этого недостаточно, нужно еще получить привелегию отладчика.
  Ответить с цитированием
Старый 20.10.2013, 10:39   #10
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: И ник персонажа

А что за привилегия отладчика?
Может быть в 7-ке права администратора это в себя включают.
  Ответить с цитированием
Старый 28.10.2013, 01:06   #11
 Пехотинец
Аватар для ToRcH2565
 
ToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известенToRcH2565 скоро будет известен
Регистрация: 02.08.2009
Сообщений: 57
Популярность: 417
Сказал(а) спасибо: 12
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: И ник персонажа

Может быть и включают, невкурсе как в вин 7... но в хп их нужно получать(там нет запуска под админом), даже когда запускаю от администратора все приложения, чтоб копатся в чужой памяти, приходится сказать системе что айм есть отладчик)
  Ответить с цитированием
Старый 28.10.2013, 09:48   #12
 Разведчик
Аватар для Forester!
 
Forester! никому не известный тип
Регистрация: 22.09.2013
Сообщений: 4
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
Post Re: И ник персонажа

Сейчас уже программа находит все окна PW и выводит ники персов в combobox, а при выборе ника определяет и выводит показатели MP HP CHI, правда с Чи загвоздка, понять не могу считываю максимальные показатели Чи, а там четырехзначное число.
Кто нибудь может подсказать почему?
  Ответить с цитированием
Старый 28.10.2013, 12:12   #13
 Разведчик
Аватар для pwInfo
 
pwInfo никому не известный тип
Регистрация: 28.10.2013
Сообщений: 2
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: И ник персонажа

Как бы банально не збычало, но...
Скорее всего вы ошиблись офсетом.
  Ответить с цитированием
Старый 28.10.2013, 12:13   #14
 Пехотинец
Аватар для Desmond Hume
 
Desmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небеDesmond Hume лучик света в грозовом небе
Регистрация: 13.08.2013
Сообщений: 68
Популярность: 829
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 25
Поблагодарили 13 раз(а) в 6 сообщениях
 
По умолчанию Re: И ник персонажа

Forester!, четырехзначное, или четырехбайтное?
  Ответить с цитированием
Старый 28.10.2013, 19:52   #15
-= Мастер Света =-
 Рыцарь-лейтенант
Аватар для Smertig
 
Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(Smertig сломал счётчик популярности :(
Регистрация: 31.01.2011
Сообщений: 413
Популярность: 14489
Золото Zhyk.Ru: 300
Сказал(а) спасибо: 77
Поблагодарили 361 раз(а) в 145 сообщениях
Отправить сообщение для Smertig с помощью ICQ Отправить сообщение для Smertig с помощью Skype™
 
По умолчанию Re: И ник персонажа

Цитата:
Сообщение от Desmond HumeПосмотреть сообщение
Forester!, четырехзначное, или четырехбайтное?

Я думаю, это сути не меняет

Попробуйте считать 1 байт (если количество чи - 0, 1, 2 или 3). Если считывается ярость, то там 2 или 4 байта.
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Продам] Брут банки/персонажа и не брут персонажа 82+ I_see Perfect World 27 06.09.2013 18:15
[Обменяю] персонажа в игре battle of the immortalss на персонажа в игре пв BrainHall Perfect World 0 02.05.2013 14:10
[Куплю] Персонажа 85-100+ Demolot Perfect World 0 24.05.2012 16:23
[Обменяю] Персонажа на Бразилии на Персонажа Wild Lotus Chepari Perfect World 4 12.01.2012 11:26
[Помогите!] ник персонажа Diem7002 Общение и обсуждение 2 20.12.2011 19:35

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

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net