Wake of Gods Forum | Форум Во Имя Богов

Full Version: Исследование героев
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Причем хук на ее нажатие именно в окне жилища. В замке все равно все в гарнизон нанимается. А герою все равно уже туда не попасть. Ab
Quote:???
???
положение x -- вероятно, в пикселях
положение y -- вероятно, в пикселях
3 и 4 параметры - ширина и высота нажимаемой области.
feanor, спасибо!
Я обычно делаю так:
1. по названию дефа нахожу функцию создающую диалог с этой кнопкой.
2. запоминаю ID кнопки, он PUSHится прямо рядом с PUSHом имени дефа.
3. Ищу функцию обработки сообщений этого диалогового окна, ставя бряк на известную мне функцию, которая точно вызывается и з этого обработчика (например функция показа сообщения)
4. в функции обработки сообщений окна нахожу место где идет проверка на равенство ID нажатой кнопки тому который запомнил и вуаля.

Но не представляю сколько времени потребуется чтобы все это осуществить только с помощью Олли.
HexRays в ИДЕ - это моё всё.
(08.09.2010 01:36)baratorch Wrote: [ -> ]Но не представляю сколько времени потребуется чтобы все это осуществить только с помощью Олли.
дилетантам типа меня или GhostManSD - около 15 минут.
Добавлено:
это, конечно, если использовать артмани для поиска текста
GhostManSD Wrote:Вот ищу я славный момент, когда же у нас
запускается окошко найма существ во внешнем жилище.
Иду этим путем. И что же? Результат для точек останова
сразу на три или четыре адреса - один: при первом же
запросе к окошку срабатывает точка останова. И бес его
знает, какой из адресов мне нужен.
Если тебе надо сделать что-то, не связанное непосредственно с диалогом, наверное, подойдёт любой.
Только лучше проверять на нескольких разных жилищах.
Вопрос адресован в первую очередь baratorch. По поводу отлова адреса, где нажимается кнопка. Взять то же окошко найма, например. Ищем деф кнопки покупки. Нашли. Переходим на адрес (например, по адресу AAAAAA). Чуть ниже (по адресу AAAAAB) - то, что я называю BID (button id). BID=7802. Снова иду на строчку дефа, нажимаю стек вызова. Появляется окошко с вызовами, под каждым из вызовов идут строки в духе "[адрес]argument1=x", "[адрес]argument2=y", etc. Вместо x и y написаны адреса. Я так понимаю, мне нужно найти случай, где "argument#=[адрес, где расположен BID]", и поставить на него ловушку. Я верно понял твой способ? Поскольку нигде нет данных типа "если x=7802, прыгнем-ка мы туда...".
ну как же... сразу после того, как функция, которой передается ид кнопки, отработает, идет проверка возвращаемых значений что-нибудь типа cmp eax,1E7Ah
Вот я именно это и имел в виду. Значит, угадал: сравнивается не BID, а его адрес. Спасибо.
какой еще адрес? сравнивается код кнопки!
То есть для кнопки с кодом ID=7802 должно быть cmp eax, 7802?
Подскажите, пожалуйста, за что отвечает этот адрес: 0x42437D.
Более подробная информация - здесь.
(08.09.2010 22:48)GhostManSD Wrote: [ -> ]То есть для кнопки с кодом ID=7802 должно быть cmp eax, 7802?
я так и написал. но в олли ты увидишь только шестнадцатеричные значения, поэтому для тебя я перевел 7802: будет 1E7A. а буква h в конце значит что число записано в шестнадцатеричной системе исчисления.
Quote:для тебя я перевел 7802: будет 1E7A
Лол, мы просто друг друга не поняли. Ab Я и написал в hex, так, как отображается в окне Olly.
Reference URL's