![]() |
eXeL@B —› Вопросы новичков —› Присоединить GetWindowLong() |
Посл.ответ | Сообщение |
|
Создано: 10 апреля 2013 14:57 · Личное сообщение · #1 В окне Windows OllyDbg установка ВР на ClassProc на элементы окна или само окно или порождаемые дочерние окна не даёт положительный результат - ВР не срабатывает (возможно из-за антиотладки). Поэтому для поиска кода, связанного с элементами окна, решил обратиться к функции GetWindowLong(), которая, как сказано, возвращает адрес оконной процедуры. Хэндл окна мне доступен, и его я могу принять в ODbgScript. А вот как дальше запускать эту функцию я не знаю. Надо ли добавочно резервировать память, или достаточно сформировать блок exec/ende ? Может кто эту или похожую задачу знает как делать и подскажет? ![]() |
|
Создано: 10 апреля 2013 23:22 · Личное сообщение · #2 В окне Windows OllyDbg установка ВР на ClassProc не срабатывает. Зачем такие сложности, чем не устраивает bp ShowWindow. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше ![]() |
|
Создано: 10 апреля 2013 23:24 · Личное сообщение · #3 |
|
Создано: 11 апреля 2013 16:42 · Личное сообщение · #4 |
|
Создано: 11 апреля 2013 19:45 · Личное сообщение · #5 Вышел я на главное окно, используя BP ShowWindow: вначале я нажимал F9 и аккуратно записывал адрес, но скоро это надоело - стал просто нажимать F9, а затем - взял вдавил клавишу, и программа выскочила на главное окно! Теперь надо локализовать последние строчки перед открытием окна - тут, конечно, без ODbgScript не обойтись. ----------------------------------------------- А ссылочки на указанную утилиту у кого-нибудь не найдётся? ![]() |
|
Создано: 11 апреля 2013 20:01 · Поправил: gena-m · Личное сообщение · #6 Что то тебя так и тянет в скрипты, они для другого. При остановке у тебя в стеке есть информация о том, что создается, а тебе нужно определится, создание какого окна нужно отловить. Допустим на пятый раз тебе попалось нужное окно, после этого давишь не F9 а Ctrl+F9 и постепенно выходишь из системных библиотек и попадаешь в то место программы где оно создается. А ссылочки на указанную утилиту у кого-нибудь не найдётся? Если имеется ввиду Microsoft Spy++, то он входит в состав Microsoft Visual Studio это среда программирования. Найти ее в гугле не сложно. ----- Надежда - есть худшее из зол, ибо она продлевает наши страдания.© Ф. Ницше ![]() |
|
Создано: 12 апреля 2013 00:04 · Поправил: plutos · Личное сообщение · #7 |
|
Создано: 12 апреля 2013 17:10 · Личное сообщение · #8 gena-m При остановке у тебя в стеке есть информация о том, что создается, а тебе нужно определится, создание какого окна нужно отловить. Допустим на пятый раз тебе попалось нужное окно, после этого давишь не F9 а Ctrl+F9 Это всё понятно, что надо после нужного останова спускаться до return'a , а затем и выходить. Дело в том, что нужное окно (да оно вообще - первое!) появилось после сотни остановок на этой ВР . Конечно, я следил за стеком (на первой десятке) - об этом я уже писал. Видел и откуда идёт вызов, и состояние (SW_SHOW, SW_HIDE). Да только никакого окна не появлялось до главного окна. А от него я уже не раз пытался обратными переходами выйти на код - жизни не хватит на это! Вот поэтому я решил автоматизировать запись адреса вызова после останова на ВР, затем run и так до появления окна. А из протокола выбрать последний адрес. Другого я не вижу способа. plutos У меня к несчастью express-версия, а в ней из tools'ов только консоль. ![]() |
|
Создано: 12 апреля 2013 23:04 · Личное сообщение · #9 |
|
Создано: 13 апреля 2013 15:16 · Поправил: ksol · Личное сообщение · #10 Может быть и так, только их очень много! Это скорее всего в качестве антиотладки генерируется "мусор". Ну, да ладно. У меня возник сейчас другой вопрос: Может кто скажет есть ли оконная API-функция для приёма 16-ричного числа наподобие MessageBox() - для вывода, или ReadConsole() - для консольного ввода. Хотел бы использовать её на ассемблере. ![]() |
|
Создано: 13 апреля 2013 17:23 · Личное сообщение · #11 |
|
Создано: 14 апреля 2013 14:18 · Личное сообщение · #12 Может я нечётко написал - повторю: надо для оконного приложения на ассемблере включить ввод числа с клавиатуры простейшим способом в виде появления сообщения "введи:". Мне не известна АПИ- функция для этого. А sprintf, scanf - это, вроде, сишные функции. И как их подключать вместе с API, надо будет заменять stdcall, потом эти inc- и lib-файлы? ![]() |
|
Создано: 14 апреля 2013 14:23 · Поправил: ARCHANGEL · Личное сообщение · #13 |
|
Создано: 15 апреля 2013 18:11 · Личное сообщение · #14 |
![]() |
eXeL@B —› Вопросы новичков —› Присоединить GetWindowLong() |
Эта тема закрыта. Ответы больше не принимаются. |