-
Ситуация: имеется некий исполняемый файл, импортирующий много разных функций из пакетов (bpl). Периодически при запуске получается сообщение EOutOfResourses 'Error creating window class' или иное, свидетельствующее об исчерпании ресурсов. Хотелось бы а) понять, кто что вызывает и нафига. б) получить стек при вызовах конкретных API-функций, в частности, RegisterClass, GlobalAddAtom и т.п.
Самому перехватчик писать лень. ApiMon от Microsoft запустить в свое время не удалось. Интересует бесплатное решение, позволяющее получить 1) профиль вызовов API-функций (USER, GDI, OLE, ...) 2) Стек при каждом вызове.
Я знаю, тут есть спецы по перехватыванию :)
Может, кто напомнит, как бороться с исчерпанием глобальных атомов в приложениях, написанных на Delphi (есть такая проблема). Исполняемых файлов такого типа запускается много (одновременно сотни, за сеанс десятки тысяч запусков), хотелось бы облегчить по ресурсам.
-
-
-
-
sniknik © (06.04.16 00:18) [1]
Спасибо! Я помню, что на sql.ru ссылка на хабр упоминалась :)
-
Nouser © (06.04.16 00:46) [3]
В гугле я искать умею. Если кто-то не пробовал сам, а советует, мне это не интересно.
-
Насколько помню bpl основана на оверлеях. Функции перезагружаются из бибилотеки в общую память по переменно. Имеем динамически изменяемый код. Тут любой хук бесполезен. Разве что специализированный написать.
А из отладчиков Delphi может показать стек вызовов. Но даже он не все силен. А ещё AQtime хвастался поддержкой bpl. При наличии лицензионной Delphi есть бесплатная версия. По идее её должно хватить.
В вашем случае если у вас есть исходники. То внедрять отладочные модули. Управлять ими по внешней команде. Называется этот прием трассировкой. Результаты пишутся в лог. После анализируются.
Перехват можно устроить написав парсер исходников и вставив вызов отладочных функций в нужные процедуры как в SimleProfiler. Даже можно его использовать.
-
Pavia © (06.04.16 13:30) [6]
"Вы, сударь, ерунду говорите. И хуже всего то, что говорите безапеляционно и уверенно"
-
> Pavia © (06.04.16 13:30) [6] > Насколько помню bpl основана на оверлеях.
Вы, вероятно, путаете с DOS. Сейчас "оверлеями" занимается сама Windows, а bpl - простая dll с точки зрения Windows.
-
> Игорь Шевченко © (06.04.16 11:28) [5] Сам этим давно не занимался, дай думаю посмотрю как оно там сейчас. Глянул - и фильтр, и стек, и параметры (с раскруткой), и длительность, и результат (с LastError), и ... Пришёл в восторг - поделился ссылкой.
Ну, уж коль не интересно, так простите.
-
Ребят, вы кажется издеваетесь над Игорем. Он в курсе и как это делать и что для этого нужно написать. Вопрос то простой был и Коля сразу в первом посте дал ссылку на решение.
По поводу оверлеев - поржал конечно, так и хочется привести линки на свои статьи по этому поводу, но ИМХО уже избыточно.
А по поводу линка от "NoUser ©" на апимон - тут да, это один из самых шикарных инструментов для исследования приложения. Сам пользуюсь уже какой год - вещь однозначно (есть конечно минусы).
-
А чего не хватает в API Monitore или аналогичных? И чего вы бы хотели исправить?
> Сам пользуюсь уже какой год.
А можно подробнее, как для чего? Просто с моей точки зрения API Monitir это игрушка на один вечер.
Просто не первый год есть желание заиметь нечто подобное, но своё. Но дальше желания пока, что дело не идёт. Останавливает рентабельность, данной затеи. В этом году начал подбор материала. За какой продукт подобного рода вы готовы заплатить?
-
> Pavia © (06.04.16 22:51) [11]
> Просто не первый год есть желание заиметь нечто подобное, > но своё. Но дальше желания пока, что дело не идёт. Останавливает > рентабельность, данной затеи
т.е. в виде коммерческого продукта? думаю удивить чем-то, за что готовы будут платить, довольно сложно. нужно нечто вроде IDA. да и не в этом главный минус, относительно узок круг потенциальных клиентов, которые будут использовать инструмент ежедневно. это специалисты вроде Розыча, а их по пальцам перечесть во всем мире.
обычные программеры используют такие утилиты разово, для решения какой-то конкретной задачи, как ИШ с данным сабжом. для enterprise'а, с которого можно собрать звонкие монеты, скорее подойдут утилиты вроде эврики и madexcept, а это немного другая сфера, как ты понимаешь.
-
> Pavia © (06.04.16 22:51) [11] > А можно подробнее, как для чего?
Для мониторинга вызова АПИ, есесно. Для чего им еще можно пользоваться? Грубо хочу понять что делает какое-то ПО, включаю мониторинг и анализирую логи с целью найти место где более удобно было бы бряком встать.
-
И по поводу рентабельности - такие проекты пишутся не для извлечения прибыли. Они пишутся энтузиастами для себя и если получается что-то дельное, то и для других. Как примеры: Olly Debug - полностью фришный отладчик от Олега Ющука CFF Explorer - полностью фришный PE вьювер от Daniel Pistelli DiE - полностью фришный PE анализатор от Hellsp@wn Process Hacker - полностью фришная утилита выдающая подробнейшую информацию по процессам и системным структурам и прочее от Wen Jia Liu Да даже мой фришный Process Memory Map
Конкурендов для этого да еще и платных создать врятли получится
-
Как-то на одной конференции слушал доклад по поводу заработка на бесплатном ПО. Интересную модель рассказывал докладчик (название продукта, увы, не помню).
Они делают софтинку для удалённого управления компом. Причем она доступна Free, причем в исходниках. Но нюанс в лицензии. Детали и нюансы могу переврать, но суть в том, что: можешь использовать бесплатно, можешь тырить куски кода, но обязан указать их копирайт (не знаю точно в каком виде и где именно, но как минимум ссылку "при разработке использовано по разработки таких-то").
Софт качественный, времени убито много, много нюансов обыграно, работает хорошо. Есть компании, которые хотят в свой софт встроить возможность удалённого управления для поддержки. Но они не хотят упоминать кого-либо по каким-то внутренним причинам. Тогда они покупают платную лицензию, по которой они освобождаются от необходимости указывать (с). Работает (в смысле монетизации), понятно, только на загнивающем западе.
-
> KSergey © (07.04.16 15:52) [15]
Это старый вариант BSD лицензии, но с некоторых пор из нее исключен пункт 3, обязывающий указывать копирайт.
Я вот свои исходники вообще без лицензии отдаю, ибо если честно не охота с этим заморачиваться, да и смысла особого, если честно не вижу. Нет во мне коммерческой жилки почему-то :)
|