Сейчас на форуме: asfa, Rio, _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Присоединить GetWindowLong()
Посл.ответ Сообщение

Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 10 апреля 2013 14:57
· Личное сообщение · #1

В окне Windows OllyDbg установка ВР на ClassProc на элементы окна или само окно или порождаемые
дочерние окна не даёт положительный результат - ВР не срабатывает (возможно из-за антиотладки).
Поэтому для поиска кода, связанного с элементами окна, решил обратиться к функции GetWindowLong(),
которая, как сказано, возвращает адрес оконной процедуры.
Хэндл окна мне доступен, и его я могу принять в ODbgScript. А вот как дальше запускать эту функцию
я не знаю. Надо ли добавочно резервировать память, или достаточно сформировать блок exec/ende ?
Может кто эту или похожую задачу знает как делать и подскажет?



Ранг: 87.8 (постоянный), 10thx
Активность: 0.070
Статус: Участник

Создано: 10 апреля 2013 23:22
· Личное сообщение · #2

В окне Windows OllyDbg установка ВР на ClassProc не срабатывает.

Зачем такие сложности, чем не устраивает bp ShowWindow.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше


| Сообщение посчитали полезным: ksol


Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 10 апреля 2013 23:24
· Личное сообщение · #3

Зачем и правда такие сложности, есть же Microsoft Spy++, ShowWindow не то.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 11 апреля 2013 16:42
· Личное сообщение · #4

gena-m, ARCHANGEL - спасибо! Буду пробовать!



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 11 апреля 2013 19:45
· Личное сообщение · #5

Вышел я на главное окно, используя BP ShowWindow:
вначале я нажимал F9 и аккуратно записывал адрес, но скоро это надоело -
стал просто нажимать F9, а затем - взял вдавил клавишу, и программа выскочила
на главное окно! Теперь надо локализовать последние строчки перед открытием окна -
тут, конечно, без ODbgScript не обойтись.
-----------------------------------------------
А ссылочки на указанную утилиту у кого-нибудь не найдётся?



Ранг: 87.8 (постоянный), 10thx
Активность: 0.070
Статус: Участник

Создано: 11 апреля 2013 20:01 · Поправил: gena-m
· Личное сообщение · #6

Что то тебя так и тянет в скрипты, они для другого.
При остановке у тебя в стеке есть информация о том, что создается, а тебе нужно определится, создание какого окна нужно отловить. Допустим на пятый раз тебе попалось нужное окно, после этого давишь не F9 а Ctrl+F9 и постепенно выходишь из системных библиотек и попадаешь в то место программы где оно создается.

А ссылочки на указанную утилиту у кого-нибудь не найдётся?

Если имеется ввиду Microsoft Spy++, то он входит в состав Microsoft Visual Studio это среда программирования.
Найти ее в гугле не сложно.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше





Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 12 апреля 2013 00:04 · Поправил: plutos
· Личное сообщение · #7

ksol
А ссылочки на указанную утилиту у кого-нибудь не найдётся?

Start -> All Programs -> Microsoft Visual Studio 2005 -> Visual Studio Tools -> Spy++

-----
Give me a HANDLE and I will move the Earth.




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 12 апреля 2013 17:10
· Личное сообщение · #8

gena-m
При остановке у тебя в стеке есть информация о том, что создается, а тебе нужно определится, создание какого окна нужно отловить. Допустим на пятый раз тебе попалось нужное окно, после этого давишь не F9 а Ctrl+F9
Это всё понятно, что надо после нужного останова спускаться до return'a , а затем и выходить.
Дело в том, что нужное окно (да оно вообще - первое!) появилось после сотни остановок на этой ВР .
Конечно, я следил за стеком (на первой десятке) - об этом я уже писал. Видел и откуда идёт вызов, и
состояние (SW_SHOW, SW_HIDE). Да только никакого окна не появлялось до главного окна. А от него
я уже не раз пытался обратными переходами выйти на код - жизни не хватит на это!
Вот поэтому я решил автоматизировать запись адреса вызова после останова на ВР, затем run и
так до появления окна. А из протокола выбрать последний адрес. Другого я не вижу способа.
plutos
У меня к несчастью express-версия, а в ней из tools'ов только консоль.



Ранг: 87.8 (постоянный), 10thx
Активность: 0.070
Статус: Участник

Создано: 12 апреля 2013 23:04
· Личное сообщение · #9

Вот поэтому я решил автоматизировать запись адреса вызова после останова на ВР.

Это можно и в логе посмотреть и посчитать сколько бряков было до появления окна.

-----
Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 13 апреля 2013 15:16 · Поправил: ksol
· Личное сообщение · #10

Может быть и так, только их очень много! Это скорее всего в качестве антиотладки генерируется
"мусор". Ну, да ладно.
У меня возник сейчас другой вопрос:
Может кто скажет есть ли оконная API-функция для приёма 16-ричного числа
наподобие MessageBox() - для вывода, или ReadConsole() - для консольного ввода.
Хотел бы использовать её на ассемблере.




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 13 апреля 2013 17:23
· Личное сообщение · #11

Есть, MessageBox+sprintf, scanf.



Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 14 апреля 2013 14:18
· Личное сообщение · #12

Может я нечётко написал - повторю: надо для оконного приложения на ассемблере включить
ввод числа с клавиатуры простейшим способом в виде появления сообщения "введи:". Мне не известна АПИ- функция для этого.
А sprintf, scanf - это, вроде, сишные функции. И как их подключать вместе с API, надо будет
заменять stdcall, потом эти inc- и lib-файлы?




Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 14 апреля 2013 14:23 · Поправил: ARCHANGEL
· Личное сообщение · #13

ksol
wsprintfA/W

Это - Win API.

-----
Stuck to the plan, always think that we would stand up, never ran.




Ранг: 102.0 (ветеран), 18thx
Активность: 0.070.02
Статус: Участник

Создано: 15 апреля 2013 18:11
· Личное сообщение · #14

ARCHANGEL
А как эту функцию форматирования можно приспособить для приёма с клавиатуры?
--------------------------------------------------
Другой вопрос:
Как перехватить и (по возможности) сразу заморозить вновь созданный поток
(только через BP CreateThread ?) ?


 eXeL@B —› Вопросы новичков —› Присоединить GetWindowLong()
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати