Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
Все что нашел по окнам (на ПвЛаб).
Если тут что-то неправильно, пробуйте эти.
Глобальный список
Код:
BA+1c+18+8+AC - список высокоуровневых окон (4б)
BA+1c+18+8+8С - список вспомогательных окон (4б)
Внутри каждого окна по смещению +1C8 лежит указатель на список контролов данного окна.
Структура списка (одинакова):
Код:
+4 - указатель на следующий элемент списка или 0, если элемент последний
+8 - PTR контрола
Структура контролов различна для каждого конкретного типа контрола (метки, кнопки, флажки и т.п.). Но есть и много общего, что совпадает для всех контролов:
Код:
+18 - класс контрола (указатель на ASCII-Z строку)
+84 - x-координата (4б, int, может быть отрицательна)
+88 - y-координата (4б, int, может быть отрицательна)
+8C - width (ширина контрола, 4б, int)
+90 - height (высота контрола, 4б, int)
Координаты контролов задаются относительно родительского окна (и могут быть отрицательными). Путём прямой модификации структуры контролов можно менять их состояние. Например, для меток (классы, начинающиеся с "Txt_"), по +B8 лежит указатель на текст метки. Для флажков (классы "Chk_") по +121 лежит 1-байтовое поле "чекнутости". Если там 1, флажок установлен.
инжект наиболее важной функции, которая играет для гуйщика ту же роль, что пакетная функция - для пакетчика.
Код:
809A00 - SendGUICommand.
esi=ecx = PTR целевого окна
1 арг. - указатель на символьную строку с командой
Код:
7FD4C0 - инжект установки активного окна
ecx=BA+1c+18+8,
1 арг. - PTR окна, которое должно стать активным
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
Так можно получить указатели на все окна высокого или низкого уровня.
Код:
'Перечисления
Public Enum winLvlStruct As Integer
structHightLevel = 1
structLowLevel = 2
End Enum
'Получает все окна в заданном списке Высокого уровня или Низкого
Public Function getWinList(winStructLevel As Integer) As ArrayList
Dim WinStruct As Integer
'Лист для сохранения найденных окон
Dim winList As New ArrayList
If winStructLevel = 1 Then
'Обяъвляем адрес начала структуры окон высокого уровня
WinStruct = MemoryManager.ChainReadInt32(adrBaseAddress, &H1C, &H18, &H8, &HAC)
ElseIf winStructLevel = 2 Then
'Обяъвляем адрес начала структуры окон низкого уровня
WinStruct = MemoryManager.ChainReadInt32(adrBaseAddress, &H1C, &H18, &H8, &H8C)
Else
Return Nothing
End If
'Указатель на текущую структуру окна
Dim currentWinPtr As Integer = MemoryManager.ReadInt32(WinStruct + &H8)
'Указатель на структуру следующего окна или 0, если это последнее окно
Dim nextWinPtr As Integer = MemoryManager.ReadInt32(WinStruct + &H0)
'Рассмотрим окна
'Выходим если наткнемся на ноль
Do Until nextWinPtr = 0
winList.Add(currentWinPtr)
'берем следующее окно
nextWinPtr = MemoryManager.ReadInt32(nextWinPtr + &H0)
'И смотрим в его структуру
currentWinPtr = MemoryManager.ReadInt32(nextWinPtr + &H8)
Loop
Return winList
End Function
А наименование окна можно прочитать так:
Код:
'Параметр имени окна (ASCII строка) по указателю
Public Function getWinNameOnPtr(winPtr As Int32) As String
Return MemoryManager.ChainReadString_ASCII(winPtr + &H4C, 32, 0)
End Function
Если в более привычной записи то это так: WinName = WinPtr + $4C +$0.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
Получаю ту же фигню на китайском и окон 428 штук, мне кажется их там столько нету
Код:
procedure ReadWinAddrList(hProc: THandle; winList: TStrings);
const
HiWin: array [1..5] of dword = (base_addr, $1c, $18, $8, $AC);
LoWin: array [1..5] of dword = (base_addr, $1c, $18, $8, $8C);
var
WinStruct, currentWinPtr, nextWinPtr: dword;
WinType: Integer;
begin
for WinType := 1 to 2 do
begin
// Обяъвляем адрес начала структуры окон высокого уровня
if WinType = 1 then
WinStruct := ChainReadInt32(hProc, @HiWin, High(HiWin))
else
if WinType = 2 then
WinStruct := ChainReadInt32(hProc, @LoWin, High(LoWin));
// Указатель на текущую структуру окна
currentWinPtr := ReadInt32(hProc, WinStruct + $8);
// Указатель на структуру следующего окна или 0, если это последнее окно
nextWinPtr := ReadInt32(hProc, WinStruct + $0);
// Рассмотрим окна
// Выходим если наткнемся на ноль
while nextWinPtr <> 0 do
begin
winList.Add(IntToHex(currentWinPtr, 8));
// берем следующее окно
nextWinPtr := ReadInt32(hProc, nextWinPtr + $0);
// И смотрим в его структуру
currentWinPtr := ReadInt32(hProc, nextWinPtr + $8);
end;
end;
end;
function getWinNameOnPtr(hProc: THandle; winPtr: dword): String;
begin
Result := ReadString(hProc, ReadInt32(hProc, winPtr + $4C));
end;
и мне кажется что тут
Код:
nextWinPtr = MemoryManager.ReadInt32(nextWinPtr + &H0)
'И смотрим в его структуру
currentWinPtr = MemoryManager.ReadInt32(nextWinPtr + &H8)
ошибка
nextWinPtr и так содержит указатель на следующее окно, мы получается через одно скачем. Мне кажется строки надо переставить местами, я уж не говорю о том что если nextWinPtr станет = 0, то в currentWinPtr будет чепуха
это не критично, т.к. дальше нигде использоваться не будет, но все-же
Добавлено через 57 минут
простая функция, возвращающая заголовок 1-го окна
Код:
function getFirstHiWinName(hProc: THandle): String;
const
HiWin: array [1..7] of dword = ($B27A04, $1c, $18, $8, $AC, $8, $4C);
var
addr: dword;
begin
addr := ChainReadInt32(hProc, @HiWin, High(HiWin));
Result := ReadString(hProc, addr);
end;
возвращает ровно ту же фигню на китайском что и пара функций выше
Последний раз редактировалось gurin; 01.04.2012 в 16:17.
Причина: Добавлено сообщение
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------
Последний раз редактировалось krukovis; 01.04.2012 в 21:24.
Причина: Добавлено сообщение
я перевел и привел его выше в посте
он у меня не заработал, потому и начал искать где налажал, не нашел , но нашел то что написал. Сорри если не в тему.
спасибо за брейкпойнт (сейчас порою) - и за то что вообще даёшь информацию
Каждый раз там разные значения. Но даже если его взять за адрес, то если его подставить вместо BTN_CLOSE - ничего не происходит.
Перешерстил весь код клиента, нашел несколько ссылок на IDOK, наиболее вероятная мне показалась $AD4870, но... не пашет , как и все остальные, видимо в коте эта кнопка не IDOK
Функция работы с gui принимает ТЕКСТОВЫЕ команды. Т.е. клиент выделяет место в памяти в случайном месте и помещает туда ASCII строку, например для кнопки ОК у кота это слово "confirm", и загружает адрес этой команды в функцию. Для кнопки Отмена - текст будет "IDCANCAL". Для этой команды есть и постоянное значение в памяти - текст по адресу 0x00ACB998 (используется при закрытие на крестик). Название то же, только выделять место в памяти не нужно, т.к. это стандартная команда для всех окон, для нее сделали константу. Но для кнопки так же выделяется память и туда пишется команда.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Совершенный автологин для Perfect World [RUOFF, PWI, Фришек 1.4.4 - 1.4.5]
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - Патч на Горны, Красный (да и любой) чат, Анфриз, Бесконечный зум, Моментальный разгон на полете для RUOFF, PWI и прочих 1.4.6 и фришек 1.4.4, 1.4.5.
--------------------------------------------
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - патчер для серверов 1.4.5 и 1.4.4 работающий с включенной игрой.
--------------------------------------------