tumanovalex
Помогающий
Offline
|
|
« : 14-12-2006 21:09 » |
|
Подскажите, пожалуйста, какими средствами можно определить, какие WinAPI вызывает приложение (текстовой редактор) при изменении масштаба представления теста на экране, изменении размера шрифта на экране при заданном масштабе, изменении форматирования абзаца и др. Буду признателен за ссылки по интересующей теме.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
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
Помогающий
Offline
|
|
« Ответ #2 : 15-12-2006 20:36 » |
|
Имелись ввиду, конечно, функции системы. И функции при указанных мной операциях могут быть разные. Мне ответили, что такую задачу (определение функций системы при каких-либо операциях может решить программа ApiMon, которая, видимо, и нужна для определения этих функций. Этот ответ неправильный?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Online
Пол:
Пролетал мимо
|
|
« Ответ #3 : 15-12-2006 20:47 » |
|
Есть способ чуть попроше, но более нудный. Программа которая идет в поставке с Visual C++. DumpBin называется. С помощью ее можно просмотреть таблици импортных функций всех библиотек, подключаемых к программе. Потом вооружится MSDN. И прочитать, что каждая из функций делает.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #4 : 15-12-2006 20:55 » |
|
tumanovalex, а кто такой вопрос странный поставил? И для чего нужен ответ на этот всё-таки странный вопрос?
|
|
|
Записан
|
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #5 : 15-12-2006 21:02 » |
|
Это вопрос не ко мне, а к преподавателю. Видимо, хочет меня пропощупать.
|
|
|
Записан
|
|
|
|
Джон
просто
Администратор
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
Спокойный
Администратор
Online
Пол:
Пролетал мимо
|
|
« Ответ #7 : 15-12-2006 21:33 » |
|
Джон, Можно также делать ход конем Просмотреть список всех загруженных библиотек в процесс. Ну и действовать от противного. Список всех экспортных функций Зы: А кто сказал, что это будет легко, нудно это точное определение
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
npak
|
|
« Ответ #8 : 16-12-2006 13:05 » |
|
можно подменить user32.exe своей DLL, которая сбрасывает информацию о всех обращениях к функциям GUI, в лог. Возможно, в интернете выложены уже готовые. Если нет, то можно написать самостоятельно.
|
|
|
Записан
|
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #9 : 16-12-2006 20:50 » |
|
К сожалению, не обладаю достаточной квалификацией написания программы для подмены DLL. Как может называться такая программа? А то бы я поискал в Интернете.
|
|
|
Записан
|
|
|
|
|
zubr
Гость
|
|
« Ответ #11 : 18-12-2006 15:01 » |
|
Как вариант, можно воспользоваться отладчиком W32DASM. Он показывает экспорт-импорт API-функций. При определенном режиме, может останавливаться на каждой вызываемой API-функции. Довольно прост в работе.
|
|
|
Записан
|
|
|
|
Daniloff
Помогающий
Offline
|
|
« Ответ #12 : 19-12-2006 11:18 » |
|
npak, объясните, пожалуйста, что сие значит? Что за "user32.exe" и какое он имеет отношение к GUI? Может имелась в виду gui32.dll?
|
|
|
Записан
|
|
|
|
npak
|
|
« Ответ #13 : 19-12-2006 12:33 » |
|
описка - user32.dll В ней реализованы функции вывода текста (DrawText и компания). В придачу к ней нужно мониторить и gdi32.dll - в ней реализованы функции работы с графическими объектами (шрифтами и кистями) и примитивы рисования (Arc, LineTo и прочие).
|
|
|
Записан
|
|
|
|
Daniloff
Помогающий
Offline
|
|
« Ответ #14 : 19-12-2006 13:27 » |
|
Я тоже в свою очередь ошибся - вместо GDI32 написал GUI32
|
|
|
Записан
|
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #15 : 22-12-2006 18:58 » |
|
Спасибо большое всем ответившим. К сожалению, для скачки "Средства поддержки пакета обновления 2 (SP2) для Windows XP", в котором и находится apimon, требуется проверка подлинности Windows. Может быть кто-нибудь даст ссылочку для скачки без проверки подлинности?
|
|
|
Записан
|
|
|
|
npak
|
|
« Ответ #16 : 25-12-2006 09:40 » |
|
Если чего-то нет сети Интернет, то ищи в других сетях. Например, файлообменных - EMule, EDonkey
|
|
|
Записан
|
|
|
|
tumanovalex
Помогающий
Offline
|
|
« Ответ #17 : 25-12-2006 17:05 » |
|
Спасибо, поищу
|
|
|
Записан
|
|
|
|
andrystepa
Помогающий
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 »
|
Записан
|
|
|
|
|