Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

[Инжект] Функция для работы с GUI

-

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

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

Ответ
 
Опции темы
Старый 16.04.2017, 18:59   #46
 Разведчик
Аватар для DHouse
 
DHouse никому не известный тип
Регистрация: 19.10.2011
Сообщений: 29
Популярность: 12
Сказал(а) спасибо: 7
Поблагодарили 8 раз(а) в 7 сообщениях
 
Question Re: [Инжект] Функция для работы с GUI

День добрый.
Уже пару дней расковыриваю как взаимодействовать с GUI и как-то не очень получается.

Кейс первый.
Загружен клиент, в нем открыт список титулов, фокус установлен на editbox с поиском: Win_TitleList.Txt_Search.
Пытаюсь установить новое текстовое значение в этот контрол, но просто затирается текущее, причем каретка остается на месте:
Код:
        public static void Test1(int pid = 1111)
        {
            //process
            Process process = null;
            var processes = Process.GetProcessesByName("elementclient");
            foreach (var p in processes)
                if (p.Id == pid)
                {
                    process = p;
                    break;
                }
            if (process == null)
                return;
            //handle
            IntPtr handle = OpenProcess(0x001F0FFF, false, process.Id);

            //read mem
            uint bytesread;
            var buffer = new byte[4];
            //game
            ReadProcessMemory(handle, 0xEFFDAC, buffer, 4, out bytesread);
            var game_addr = BitConverter.ToUInt32(buffer, 0);
            //gui
            ReadProcessMemory(handle, game_addr + 0x18, buffer, 4, out bytesread);
            var gui_addr = BitConverter.ToUInt32(buffer, 0);
            ReadProcessMemory(handle, gui_addr + 0x8, buffer, 4, out bytesread);
            gui_addr = BitConverter.ToUInt32(buffer, 0);
            //active_win
            ReadProcessMemory(handle, gui_addr + 0x74, buffer, 4, out bytesread);
            var active_win = BitConverter.ToUInt32(buffer, 0);
            //active_control
            ReadProcessMemory(handle, active_win + 0xE8, buffer, 4, out bytesread);
            var active_control = BitConverter.ToUInt32(buffer, 0);
            //active_edittext
            ReadProcessMemory(handle, active_control + 0x13FC, buffer, 4, out bytesread);
            var active_edittext = BitConverter.ToUInt32(buffer, 0);

            //alloc
            var value = "some text";
            var new_addr = VirtualAllocEx(handle, 0, value.Length * 2 + 2, 0x1000, 0x04);
            //write str
            var bytes = Encoding.ASCII.GetBytes(value + "\0");
            uint byteswritten;
            WriteProcessMemory(handle, new_addr, bytes, bytes.Length, out byteswritten);
            //write addr
            bytes = BitConverter.GetBytes(new_addr);
            WriteProcessMemory(handle, active_edittext, bytes, bytes.Length, out byteswritten);
            //free
            CloseHandle(handle);
        }
Кейс второй.
Фокус все там же. В строке поиска какое-то значение. Пытаюсь нажать кнопку "Поиск" Win_TitleList.Btn_Search, но ничего не происходит.
Код:
        public static void Test2(int pid = 1111)
        {
            //process
            Process process = null;
            var processes = Process.GetProcessesByName("elementclient");
            foreach (var p in processes)
                if (p.Id == pid)
                {
                    process = p;
                    break;
                }
            if (process == null)
                return;
            //handle
            IntPtr handle = OpenProcess(0x001F0FFF, false, process.Id);

            //read mem
            uint bytesread;
            var buffer = new byte[4];
            //game
            ReadProcessMemory(handle, 0xEFFDAC, buffer, 4, out bytesread);
            var game_addr = BitConverter.ToUInt32(buffer, 0);
            //gui
            ReadProcessMemory(handle, game_addr + 0x18, buffer, 4, out bytesread);
            var gui_addr = BitConverter.ToUInt32(buffer, 0);
            ReadProcessMemory(handle, gui_addr + 0x8, buffer, 4, out bytesread);
            gui_addr = BitConverter.ToUInt32(buffer, 0);
            //active_win
            ReadProcessMemory(handle, gui_addr + 0x74, buffer, 4, out bytesread);
            var active_win = BitConverter.ToUInt32(buffer, 0);
            //controls
            ReadProcessMemory(handle, active_win + 0x1C8, buffer, 4, out bytesread);
            var controls = BitConverter.ToUInt32(buffer, 0);
            //control
            var it = 31;//Btn_Search index
            var control = controls;
            for (var i = 0; i < it; i++)
            {
                ReadProcessMemory(handle, control + 0xC, buffer, 4, out bytesread);
                control = BitConverter.ToUInt32(buffer, 0);
            }
            ReadProcessMemory(handle, control + 0x8, buffer, 4, out bytesread);
            control = BitConverter.ToUInt32(buffer, 0);
            #region check name
            ReadProcessMemory(handle, control + 0x18, buffer, 4, out bytesread);
            var control_name_addr = BitConverter.ToUInt32(buffer, 0);
            var string_buffer = new byte[8000];
            ReadProcessMemory(handle, control_name_addr, string_buffer, string_buffer.Length, out bytesread);
            var control_name = string.Empty;
            for (var i = 0; i < string_buffer.Length; i = i + 1)
                if (string_buffer[i] == 0)
                {
                    control_name = Encoding.ASCII.GetString(string_buffer, 0, i);
                    break;
                }
            if (!control_name.Equals("Btn_Search"))
                return;
            #endregion
            //command
            ReadProcessMemory(handle, control + 0x1C, buffer, 4, out bytesread);
            var command = BitConverter.ToUInt32(buffer, 0);
                
            //asm
            var asm = string.Empty;
            asm += Asm.Pushad();//60
            asm += Asm.Mov_ECX((int)active_win);//B9+IntToHex(addr)
            asm += Asm.Push68((int)command);//68+IntToHex(addr)
            asm += Asm.Mov_EAX((int)0xAE71C0);//B8C071AE00
            asm += Asm.Call_EAX();//FFD0
            asm += Asm.Popad();//61
            asm += Asm.Ret();//C3
            //run
            var func_alloc_address = VirtualAllocEx(handle, 0, 1024, 0x1000, 0x04);
            var asm_bytes = Asm.GetBytes(asm);
            uint byteswritten;
            WriteProcessMemory(handle, func_alloc_address, asm_bytes, asm_bytes.Length, out byteswritten);
            IntPtr thread_id;
            CreateRemoteThread(handle, IntPtr.Zero, 0, (int)func_alloc_address, IntPtr.Zero, 0, out thread_id);
            VirtualFreeEx(handle, (int)func_alloc_address, asm_bytes.Length, 0x8000);
            //free
            CloseHandle(handle);
        }
Вызовы из winapi без оберток.
asm - модифицированный krukovis.ASM, так чтоб они возвращали значение.
  Ответить с цитированием
Старый 28.05.2017, 20:43   #47
 Разведчик
Аватар для ukurenijboter
 
ukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известенukurenijboter скоро будет известен
Регистрация: 19.08.2011
Сообщений: 25
Популярность: 465
Сказал(а) спасибо: 2
Поблагодарили 17 раз(а) в 9 сообщениях
Отправить сообщение для ukurenijboter с помощью Skype™
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Кто-нибудь уже искал адрес функции? Что-то сигнатура поменялась по ходу. Буду благодарен, если кто-то подскажет...
________________
Skype: ScriptoZ
ЗАПРОС АВТОРИЗАЦИИ=ИГНОР
  Ответить с цитированием
Старый 02.06.2017, 15:38   #48
 Разведчик
Аватар для AvelDilon
 
AvelDilon неизвестен в этих краяхAvelDilon неизвестен в этих краях
Регистрация: 06.08.2016
Сообщений: 13
Популярность: -108
Сказал(а) спасибо: 0
Поблагодарили 17 раз(а) в 9 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от ukurenijboterПосмотреть сообщение
Кто-нибудь уже искал адрес функции? Что-то сигнатура поменялась по ходу. Буду благодарен, если кто-то подскажет...

0x009E1400
  Ответить с цитированием
Старый 19.12.2017, 16:55   #49
 Разведчик
Аватар для Venzel
 
Venzel никому не известный тип
Регистрация: 06.12.2009
Сообщений: 20
Популярность: 10
Сказал(а) спасибо: 5
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Инжект не изменился? А то криент крашится при попытке нажать на кнопку(пви)
  Ответить с цитированием
Старый 19.12.2017, 20:43   #50
 Разведчик
Аватар для KLAIDY
 
KLAIDY никому не известный тип
Регистрация: 11.10.2010
Сообщений: 13
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 5 раз(а) в 5 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от VenzelПосмотреть сообщение
Инжект не изменился? А то криент крашится при попытке нажать на кнопку(пви)

Смотря какая кнопка, старые контролы все нажимаются.
  Ответить с цитированием
Старый 20.12.2017, 03:57   #51
 Разведчик
Аватар для Venzel
 
Venzel никому не известный тип
Регистрация: 06.12.2009
Сообщений: 20
Популярность: 10
Сказал(а) спасибо: 5
Поблагодарили 4 раз(а) в 3 сообщениях
 
По умолчанию Re: [Инжект] Функция для работы с GUI

Цитата:
Сообщение от KLAIDYПосмотреть сообщение
Смотря какая кнопка, старые контролы все нажимаются.

Значит GUI адрес неправильный использую.
Не подскажешь адрес для этой версии клиента?

Все, нашел

Последний раз редактировалось Venzel; 20.12.2017 в 22:52.
  Ответить с цитированием
Ответ

Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] Функция Xaker-style Общение разработчиков 7 16.03.2012 21:36
[Обсуждение] Функция Магнит ˆGeFoRcEˆ Общение и обсуждение, архив Point Blank 5 07.01.2012 11:50
[Помогите!] Функция открытия Rakim Вопросы и ответы, обсуждения 1 23.07.2011 10:40
[Информация] Функция открыта Vadimka999 Общение и обсуждение, архив Point Blank 5 10.05.2010 19:58

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

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

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