Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Какие WinAPI вызывает приложение?  (Прочитано 16819 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
tumanovalex
Помогающий

ru
Offline Offline

« : 14-12-2006 21:09 » 

Подскажите, пожалуйста, какими средствами можно определить, какие WinAPI вызывает приложение (текстовой редактор) при изменении масштаба представления теста на экране, изменении размера шрифта на экране при заданном масштабе, изменении форматирования абзаца и др. Буду признателен за ссылки по интересующей теме.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 14-12-2006 21:27 » 

Хе? А как ты себе представляешь WinAPI? Что значит "какие WinAPI"? Интерфейс он один.

А функций, о которых ты говоришь, нет. И средств нет. Есть только толстые книжки и MSDN. Всё делается ручками. Никто, кроме человека не знает, что значит АБЗАЦ, и как его определить.
Те надо самому всё пересчитать координаты и вывести текст в соответствующую позицию. Это если мы говорим о продвинутом редакторе, простые редакторы не могут форматировать абзацы.
Размер шрифта задаётся при его создании - ф-я CreateFont, массштаб - изменение девайс контекста. Вывод текста в позицию ф-я DrawText. В общем тебе надо смотреть ф-ции GDI, или GDI+.

зы Win API - это интерфейс, через который пользовательская программа получает доступ к функциям системы, существует в единственном числе. Ага И уж конечно не может быть средств для того, что ты спросил. Его надо просто знать.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
tumanovalex
Помогающий

ru
Offline Offline

« Ответ #2 : 15-12-2006 20:36 » 

Имелись ввиду, конечно, функции системы. И функции при указанных мной операциях могут быть разные. Мне ответили, что такую задачу (определение функций системы при каких-либо операциях может решить программа ApiMon, которая, видимо, и нужна для определения этих функций. Этот ответ неправильный?
Записан
Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #3 : 15-12-2006 20:47 » 

Есть способ чуть попроше, но более нудный. Программа которая идет в поставке с Visual C++. DumpBin называется. С помощью ее можно просмотреть таблици  импортных функций всех библиотек, подключаемых к программе. Потом вооружится MSDN. И прочитать, что каждая из функций делает.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 15-12-2006 20:55 » 

tumanovalex, а кто такой вопрос странный поставил? И для чего нужен ответ на этот всё-таки странный вопрос? Улыбаюсь
Записан

tumanovalex
Помогающий

ru
Offline Offline

« Ответ #5 : 15-12-2006 21:02 » 

Это вопрос не ко мне, а к преподавателю. Видимо, хочет меня пропощупать.
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 15-12-2006 21:20 » 

Нуууу, дык очень просто - захучить КАЖДУЮ API ф-ю и при вызове ставить галочки в "журнале" и всего делов. Так преподу и передай. Тогда ТОЧНО будешь знать, какая ф-я использовалась.

зы Вить, это работает только для статически компилируемых библиотек. Если я подгружаю системную библиотеку динамично это не поможет.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Finch
Спокойный
Администратор

il
Online Online
Пол: Мужской
Пролетал мимо


« Ответ #7 : 15-12-2006 21:33 » 

Джон, Можно также делать ход конем Улыбаюсь Просмотреть список всех загруженных библиотек в процесс. Ну и действовать от противного. Список всех экспортных функций Улыбаюсь
Зы: А кто сказал, что это будет легко, нудно это точное определение Улыбаюсь
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 16-12-2006 13:05 » 

можно подменить user32.exe своей DLL, которая сбрасывает информацию о всех обращениях к функциям GUI, в лог.  Возможно, в интернете выложены уже готовые. Если нет, то можно написать самостоятельно. 
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
tumanovalex
Помогающий

ru
Offline Offline

« Ответ #9 : 16-12-2006 20:50 » 

К сожалению, не обладаю достаточной квалификацией написания программы для подмены DLL. Как может называться такая программа? А то бы я поискал в Интернете.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 18-12-2006 07:35 » 

Конкретную программу я не нашёл, зато обнаружил заготовку с подробным объяснением принципов работы в MSDN Magazine http://msdn.microsoft.com/msdnmag/issues/03/01/GDILeaks/
В статье дана ссылка на проект для Visual Studio.  Если в нём разобраться, то квалификация как программиста Win32 возрастёт значительно.

Программа более общего назначения - apimon, входит в поставку Support Tools (http://www.microsoft.com/downloads/details.aspx?displaylang=ru&FamilyID=49ae8576-9bb9-4126-9761-ba8011fabf38)
Показывает все обращения ко всем dll, загруженным приложением. Но поскольку показывает ВСЁ, то разобраться, что именно относится к работе со шрифтами не просто.  Надо как минимум знать, что искать и на что не обращать внимание.

Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
zubr
Гость
« Ответ #11 : 18-12-2006 15:01 » 

Как вариант, можно воспользоваться отладчиком W32DASM. Он показывает экспорт-импорт API-функций. При определенном режиме, может останавливаться на каждой вызываемой API-функции. Довольно прост в работе.
Записан
Daniloff
Помогающий

ru
Offline Offline

« Ответ #12 : 19-12-2006 11:18 » new

npak, объясните, пожалуйста, что сие значит? Что за "user32.exe" и какое он имеет отношение к GUI?
Может имелась в виду gui32.dll?
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 19-12-2006 12:33 » 

описка - user32.dll
В ней реализованы функции вывода текста (DrawText и компания).
В придачу к ней нужно мониторить и gdi32.dll - в ней реализованы функции работы с графическими объектами (шрифтами и кистями) и примитивы рисования (Arc, LineTo и прочие).
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Daniloff
Помогающий

ru
Offline Offline

« Ответ #14 : 19-12-2006 13:27 » 

Я тоже в свою очередь ошибся - вместо GDI32 написал GUI32 Улыбаюсь
Записан
tumanovalex
Помогающий

ru
Offline Offline

« Ответ #15 : 22-12-2006 18:58 » 

Спасибо большое всем ответившим. К сожалению, для скачки "Средства поддержки пакета обновления 2 (SP2) для Windows XP", в котором и находится apimon, требуется проверка подлинности Windows. Может быть кто-нибудь даст ссылочку для скачки без проверки подлинности?
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 25-12-2006 09:40 » 

Если чего-то нет сети Интернет, то ищи в других сетях. Например, файлообменных - EMule, EDonkey
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
tumanovalex
Помогающий

ru
Offline Offline

« Ответ #17 : 25-12-2006 17:05 » 

Спасибо, поищу
Записан
andrystepa
Помогающий

ru
Offline Offline

« Ответ #18 : 25-12-2006 19:18 » 

Средства для ловли WinAPI ищи на www.wasm.ru - там же можно найти и различные статьи по этому вопросу. Кроме того много статей есть на www.cracklab.ru - все таки это в основном крекерские инструменты.
Да, и конечно www.rsdn.ru - в поиске пишешь "перехват API" и получаешь порядка 500 ссылок на статьи и обсуждения в форуме. Там есть, к примеру такая статья: Методы перехвата API-вызовов в Win32 - я так понимаю об этом и вопрос.
« Последнее редактирование: 25-12-2006 19:35 от andrystepa » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines