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

Бот на основе GUI

-

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

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

Ответ
 
Опции темы
Старый 25.08.2016, 19:24   #1
 Разведчик
Аватар для Arsen0208
 
Arsen0208 никому не известный тип
Регистрация: 24.10.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Бот на основе GUI

Так как научился более менее писать ботиков на основе инжекта и отправки пакетов то решил и в GUI разобраться но ничегошеньки не понял.
Ситуация такая. Цель: Принять кв у НПСа так что бы диалог с НПС закрылся (+бонусом бы активировать награду из инвентаря).

Делал я это так: инжектом автопути добирался до НПСа, пакетами выделял в таргет НПСа и открывал диалог, квест принимал тож пакетом (диалог при этом не закрывается) и закрывал Диалог отправкой нажатия ESC в нужное окно.
Долго, не красиво, но работает.

Попытался то же самое сделать с GUI но не смог даж считать имя активного окна.
По идее имя активного окна находится тут BA+1c+18+08+08+4c.
CE выдает пустоту по этому адресу...

Пожалуйста помогите разобраться :с
В принципе все что нужно тупо найти структуру крестика и вызвать как то его нажатие если я правильно все понимаю.
  Ответить с цитированием
Старый 29.08.2016, 11:41   #2
 Разведчик
Аватар для Doakes
 
Doakes никому не известный тип
Регистрация: 29.08.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Бот на основе GUI

Имя активного окна читается по адресу
BA+1c+18+08+74+4c

Последний раз редактировалось Doakes; 29.08.2016 в 12:27.
  Ответить с цитированием
Старый 29.08.2016, 20:29   #3
 Разведчик
Аватар для Arsen0208
 
Arsen0208 никому не известный тип
Регистрация: 24.10.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Бот на основе GUI

Океей.

Все равно крашит клиент :с
Цитата:
ASM asm = new ASM(memories[0]);
asm.Mov_EAX(PWOffssAndAddrss.base_address);
asm.Mov_EAX_DWORD_Ptr_EAX();
asm.Mov_EAX_DWORD_Ptr_EAX_Add(0x1C);
asm.Mov_EAX_DWORD_Ptr_EAX_Add(0x18);
asm.Mov_EAX_DWORD_Ptr_EAX_Add(0x08);
asm.Mov_EAX_DWORD_Ptr_EAX_Add(0x74);
asm.Push_EAX();

asm.Push68(0x00DD732C);
asm.Mov_EBP(0x00813030);
asm.Call_EBP();

asm.Popad();
asm.Ret();
asm.RunAsm();

Добавлено через 2 минуты
Это тоже крашит

Цитата:
ASM asm = new ASM(memories[0]);
asm.Mov_ECX(PWOffssAndAddrss.base_address + 0x1c + 0x18 + 0x08 + 0x74);
asm.Push68(0x00DD732C);
asm.Mov_EAX(0x00813030);
asm.Call_EAX();
asm.Popad();
asm.Ret();
asm.RunAsm();

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

Последний раз редактировалось Arsen0208; 29.08.2016 в 21:03. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 30.08.2016, 11:59   #4
 Разведчик
Аватар для Doakes
 
Doakes никому не известный тип
Регистрация: 29.08.2016
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Бот на основе GUI

Берем гуй инжект из этой темы.
Для его применения нам нужны адрес WinStruct, адрес команды нужного нам контрола и адрес GUI инжекта.
Приведу код на Delphi, думаю на шарп перевести не составит труда.
Получение Winstuct
Код:
GetWindowThreadProcessid(FindWindow('Elementclient Window',nil),@pid);
hProcess:=OpenProcess(PROCESS_ALL_ACCESS,False,PID);
addr:=$00E5AFA4;
ReadProcessMemory(hProcess,ptr(addr),@addr,sizeof(addr),rw);
ReadProcessMemory(hProcess,ptr(addr+$1c),@addr,sizeof(addr),rw);
ReadProcessMemory(hProcess,ptr(addr+$18),@addr,sizeof(addr),rw);
ReadProcessMemory(hProcess,ptr(addr+$08),@addr,sizeof(addr),rw);
ReadProcessMemory(hProcess,ptr(addr+$74),@addr,sizeof(addr),rw);
winstr:=addr;
Далее получаем адрес команды контрола
Код:
ReadProcessMemory(hProcess, ptr(winstr+$1c8), @addr, sizeof(addr), rw);
for i := 1 to 6 do
  ReadProcessMemory(hProcess, ptr(addr+$0c), @addr, sizeof(addr), rw);
ReadProcessMemory(hProcess, ptr(addr+$08), @addr, sizeof(addr), rw);
ReadProcessMemory(hProcess, ptr(addr+$18), @addr, sizeof(addr), rw);
COMMAND_TEXT_ADDRESS:=addr;
Примечание:6 это номер крестика в диалоговом окне с НПС. В зависимости от контрола, COMMAND_TEXT_ADDRESS может быть +18 или +1C.

Ну и адрес для гуй инжекта это $009EB960. Берется из соответствующей темы.
  Ответить с цитированием
Старый 30.08.2016, 22:15   #5
 Разведчик
Аватар для Arsen0208
 
Arsen0208 никому не известный тип
Регистрация: 24.10.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Бот на основе GUI

О господи какой же я дурак....
Все заработало....
Огромнейшее спасибо Doakes!!
  Ответить с цитированием
Старый 04.11.2016, 20:40   #6
 Разведчик
Аватар для KLAIDY
 
KLAIDY никому не известный тип
Регистрация: 11.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 5 сообщениях
 
По умолчанию Re: Бот на основе GUI

Цитата:
Сообщение от Arsen0208Посмотреть сообщение
О господи какой же я дурак....
Все заработало....
Огромнейшее спасибо Doakes!!

Понимаю, что я немного некропостер, но если вдруг увидите это сообщение, не могли бы вы написать, как решилась ваша проблема?
  Ответить с цитированием
Старый 11.11.2016, 15:28   #7
 Разведчик
Аватар для Arsen0208
 
Arsen0208 никому не известный тип
Регистрация: 24.10.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Бот на основе GUI

Не помню точно что я сделал но вроде адрес нужно было считывать по цепочке оффсетов а не прибавляя к адресу:

int CallAddress = 0x00A69420;
ASM asm = new ASM(this.memory);
asm.Pushad();
asm.Mov_ECX(this.memory.ChainReadInt32(0x00E5AFA4, 0x1c, 0x18, 0x08, 0x74));
asm.Push68(0x00DD732C);
asm.Mov_EAX(CallAddress);
asm.Call_EAX();
asm.Popad();
asm.Ret();
asm.RunAsm();

(адреса старые, поменять надо)
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Zombie Mod (на основе AMX). redromka Готовые серверы 0 26.02.2012 14:37
[Помогите!] Антиневид на основе WP Василий Пупкин Общение и обсуждение 7 25.08.2010 20:59

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

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

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