Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
а сюда заглянуть - вроде размяться в перерыве.
---
В отпуске пьянствовать не хотелось и в результате в голову
пришла идея - как сделать инструмент для
поиска утечек ресурсов в программах для Виндус.
---
Возьмём подсудимое приложение (ПП).
1. Запускаем указанный ПП внешней утилитой - назовём её "dllinjector".
2. В адресное пространство ПП внедряется диагностичнская dll.
Поскольку займёмся поиском утечек, назовём её pumpers.dll.
Два наших файла - инжектор и dll - слабо связаны друг с другом.
dll можно внедрять и без инжектора, а инжектор может внедрить любую
dll, написанную кем угодно для каких угодно целей.
Напишем оба инструмента.
3. До фактического запуска ПП pumpers.dll перехватывает все
найденные API-вызовы, связанные с выделением/возвращением ресурсов.
dll становится посредником между приложением и системой.
4. Просто ведём учёт (заполняя массив) получения/высвобождения
ресурсов.
5. По завершению работы приложения составляем отчёт.
Не высвобожденных ресурсов или иных ошибок - например, попытки удаления несуществующих хэндлов.
---
В версии 1.0 бета может быть перехвачено до 250 функций, включая ExitProcess.
Но даже в таком варианте я выгреб из своих приложений немалую кучу...
И обнаружил множество открытий чудных.
Тестировал для WINXP x86, Vista x86-x64, WIN7 x86-x64, WIN8 x86-x64 для приложений x86, x64.
Работает без административных привилегий, что удобно.
Составить ответ | Вернуться на конференцию
Ответы
- хорошая вещь - klen (пустое, 04.09.2014, 08:47:2 46.39.231.74)