Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.12.2008, 20:10
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
По умолчанию Вывод данных из игр в прогу на Делфи

Здравствуйте!!!
Товарищи меня заинтересовала одна весчь!

Просто захотелось чёт сделать интересное!

Играю в WOW(World of Warcraft) (когда есть свободное время - жаль его почти нет!)

Так вот! Сам клиент является оболочкой, куда выводятся данные персонажа и других пользователей, перемещение их и т.д. с помощью обмена пакетов данных (сервер - клиент)

А как можно перехватить эти данные с сервера (ну или параллельно взять их от туда) и вывести в делфи (в программу или в чёт ещё!)

Я имею ввиду допустим программа -

Деньги:
Жизни:
т.д.:

Она выводит колличество денег, жизни, и других значений!

Вот через Армани значения эти найти можно! А как это всё реализовать в Делфи??

Подскажите плиз, посоветуйте что нить!

Какие компоненты этим занимаются и т.д. плиз!
Ответить с цитированием
  #2  
Старый 08.12.2008, 21:39
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Смотри, в Артмани отлавливаешь необходимые значения и записываешь их адреса (смещения)
Далее создаешь проект, кидаешь необходимые компоненты... По какому либо событию прописываешь
Код:
const
 Offset = Найденной смещение

var
 Wnd: HWND;
 ThreadId, ProcessId, Hdl: Cardinal;
 BytesRead: Cardinal;

 Value: Принимаемое значение (тип выбирается исходя из значений)
begin
// окно игры
 Wnd := FindWindow(nil, Название окна игры);
// id процесса
 ThreadId := GetWindowThreadProcessId(Wnd, @ProcessId);
// открываем процесс с правами записи
 Hdl := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
// читаешь по адресу
 ReadProcessMemory(Hdl, Pointer(Offset), @Value, Сколько читать байтов, BytesRead);

// выводишь

// закрываешь процесс
 CloseHandle(hdl);
end;
Ответить с цитированием
  #3  
Старый 08.12.2008, 21:51
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
По умолчанию

хм... пасибо!!!
а можно поподробнее!
плиз!

и по поводу компонентов
Ответить с цитированием
  #4  
Старый 08.12.2008, 23:21
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
Радость

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   const
 Offset='6F71C7B8';
var
  Form1: TForm1;

 Value: string;
 Wnd: HWND;
 ThreadId, ProcessId, Hdl: Cardinal;
 BytesRead: Cardinal;

implementation

{$R *.dfm}
 begin
// окно игры
 Wnd := FindWindow(nil, 'Название окна игры');
// id процесса
 ThreadId := GetWindowThreadProcessId(Wnd, @ProcessId);
// открываем процесс с правами записи
 Hdl := OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId);
// читаешь по адресу

// выводишь

// закрываешь процесс
 CloseHandle(hdl);
 ReadProcessMemory(Hdl,Pointer(Offset), @Value, 4, BytesRead);


end.


ругается на вот эту строчку
Код:
ReadProcessMemory(Hdl,Pointer(Offset), @Value, 4, BytesRead);

вот на это слово:
Код:
@Value,


Вот такими словами:

Цитата:
[Error] Unit1.pas(42): Invalid typecast

а по идеии должна ведь работать! хотя бы компилироваться!

поправьте меня если это не так!
Ответить с цитированием
  #5  
Старый 09.12.2008, 10:07
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Замени

Value:String на Value:array [0..255] of char

И вообще не используй тип string в вызовах системных функций
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
Ответить с цитированием
  #6  
Старый 09.12.2008, 15:18
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
По умолчанию

Цитата:
[Error] Unit1.pas(42): Invalid typecast

ругатся продолжается!
Ответить с цитированием
  #7  
Старый 10.12.2008, 20:29
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
По умолчанию

из за чего он ругается! люди помогите пожалуйста! что не так я делаю??
какой мне материал почитать?? \я уже гугл задолбал! не чё путного не нашёл!
Ответить с цитированием
  #8  
Старый 10.12.2008, 23:31
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Тебе надо текст или число вытащить?
Если число то используй стандартные типы Byte, Single, Integer. Если же текст то неодходимо побайтно считывать каждый символ а затем переводить в символ
Ответить с цитированием
  #9  
Старый 05.02.2009, 18:04
ZZZRF413 ZZZRF413 вне форума
Прохожий
 
Регистрация: 16.10.2008
Сообщения: 38
Репутация: 10
По умолчанию

Sting
Написание подобной программы является нарушением EULA World of Warcraft. Если ты играешь на оффициально сайте тебя могу забанить.
Я тож както хотел сделать чтото подобное, но после того как внимательно прочел EULA, подумал и решил оставить эту идею.
Ответить с цитированием
  #10  
Старый 11.02.2009, 07:39
Sting Sting вне форума
Прохожий
 
Регистрация: 08.12.2008
Сообщения: 6
Репутация: 10
По умолчанию

не чего я не нарушаю!
На оффе не гамаю!
не нарушаю потому что мне просто надо вывести значения в прогу! а не изменить их!
Я часто оставляю комп с включеной игрой и иду допустим телек смотреть! и када напали на меня не вижу! а прога проанализирует колличество жизней, и допустим если жизни изменяться подаст мне звуковой сигнал! и усё!

ну это самый бональный и тупой пример!
Ответить с цитированием
  #11  
Старый 11.02.2009, 12:21
ZZZRF413 ZZZRF413 вне форума
Прохожий
 
Регистрация: 16.10.2008
Сообщения: 38
Репутация: 10
По умолчанию

Раз на оффе не играешь тогда особо по этому поводу не парься

Вот кстати полезно было бы прогу написать "BgWaiter". Записываешься на БГ или арену, включаешь прогу и идешь спокойно телек смотреть . Как очередь подошла прога тебе просигнализирует + антиафк чтоб с очереди не выкинуло

P.S. Мне друг говорил, что для написания аддонов в WoWe есть какойто свой язык программирования (правда мне кажется BgWaiter на нем не напишешь (бота точно не получится )). Что за язык я незнаю.
Ответить с цитированием
  #12  
Старый 11.02.2009, 16:38
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

<оффтоп>
Цитата:
Сообщение от ZZZRF413
Раз на оффе не играешь тогда особо по этому поводу не парься
вообще-то играть на пиратках-тоже нарушение EULA. хотя париться действительно не надо
Цитата:
Сообщение от ZZZRF413
P.S. Мне друг говорил, что для написания аддонов в WoWe есть какойто свой язык программирования (правда мне кажется BgWaiter на нем не напишешь (бота точно не получится )). Что за язык я незнаю.
их два: Ace и Lua
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:24.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter