Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Вниз

Процессы приложений   Найти похожие ветки 

 
Elen ©   (2006-04-14 11:57) [0]

Господа! Есть ли возможность получить список функций и процедур и их адреса, которые использует указанный загруженный процесс?


 
Сергей М. ©   (2006-04-14 12:07) [1]

Что значит "использует" ? Поясни ..


 
vodvorezlaya   (2006-04-14 12:15) [2]

Взять исходник процесса, декомпилировать )))


 
Elen ©   (2006-04-14 12:29) [3]

Использует - значит вызывает в ходе работы. Декомпилоровать кстати нет возможности. Определять должна программа


 
Сергей М. ©   (2006-04-14 12:38) [4]


> вызывает в ходе работы


Увы, нет такой возможности.

Факт хотя бы однократного вызова той или иной п/программы определяется логикой закодированного в ней алгоритма, но отнюдь не фактом присутствия в коде приложения кода той или иной п/программы.


 
Игорь Шевченко ©   (2006-04-14 12:55) [5]


> Есть ли возможность получить список функций и процедур и
> их адреса, которые использует указанный загруженный процесс?
>


Да, через отладчик. Для импортируемых процедур. У Гэри Неббета пример есть. Неббета можно найти в тырнете.


 
Сергей М. ©   (2006-04-14 13:02) [6]


> Игорь Шевченко ©   (14.04.06 12:55) [5]


При неких условиях в некий момент некая п/программа Х вызывается, а при неких иных условиях она же ни  разу не вызывается.

Можно ли считать, что п/программа Х "используется" процессом приложения ?
Судя по абстрактному пояснению "в ходе работы" (см. [3]) - нельзя.


 
Игорь Шевченко ©   (2006-04-14 13:23) [7]

Сергей М. ©   (14.04.06 13:02) [6]

Так Неббет как раз на эти вызовы ставит Breakpoints и по анализу их срабатывания определяет, что вызывалось, а что нет.


 
Сергей М. ©   (2006-04-14 13:27) [8]


> Игорь Шевченко ©   (14.04.06 13:23) [7]


Про именно импортируемые п/программы у автора ни слова в вопросе.

Просто "функций и процедур" - и все тут... И бессилен тут Неббет ..


 
Игорь Шевченко ©   (2006-04-14 13:29) [9]

Сергей М. ©   (14.04.06 13:27) [8]


> Просто "функций и процедур" - и все тут... И бессилен тут
> Неббет ..


В таком случае сгодится любой профилировщик с поддерживаемой опцией Coverage analysis.


 
Сергей М. ©   (2006-04-14 14:00) [10]


> Игорь Шевченко ©   (14.04.06 13:29) [9]


Тот самый "любой профилировщик с поддерживаемой опцией" справится с задачей отслеживания вызовов вида

push адрес_возврата
jmp точка_входа

?


 
Игорь Шевченко ©   (2006-04-14 14:55) [11]

Сергей М. ©   (14.04.06 14:00) [10]

А что, много компиляторов генерирует такие вызовы процедур ? Я не уверен, что справится, скорее всего, не справится, но см. начало поста.


 
Elen ©   (2006-04-14 15:03) [12]

Но все же например Depender из Visual Studio показывает связи процесса с подпрограммами, и вроде есть какая-то карта памяти процесса, где описаны вызовы и релоки. Знает ли кто-нибудь о ее существовании? Если знает то поподробнее пожалуйста.


 
Сергей М. ©   (2006-04-14 15:08) [13]


> Игорь Шевченко ©   (14.04.06 14:55) [11]


Не лезь в дебри.
лучше направь автора на путь истинный. Дабы хотя бы в терминологии у нее в голове прояснилось.


 
Игорь Шевченко ©   (2006-04-14 15:10) [14]

Сергей М. ©   (14.04.06 15:08) [13]


> Не лезь в дебри.


Мне можно.

Elen ©   (14.04.06 15:03) [12]


> , и вроде есть какая-то карта памяти процесса, где описаны
> вызовы и релоки.


Есть. Называется таблица импорта. Но прежде чем давать какой-то совет, ты скажи, нафига тебе это надо ?


 
Сергей М. ©   (2006-04-14 15:10) [15]


> Elen ©   (14.04.06 15:03) [12]


Какие нафих "релоки" при вызове п/п а-ля call [SomeCommonUsageRegister] ?)


 
Сергей М. ©   (2006-04-14 15:11) [16]


> Мне можно.


Исчерпывающий ответ.
Засим комментариев не имею.


 
Сергей М. ©   (2006-04-14 15:13) [17]

И меряться "длиной", Игорь, тоже не стОит, думаю.


 
Игорь Шевченко ©   (2006-04-14 15:16) [18]

Сергей М. ©   (14.04.06 15:13) [17]

Да я никаким боком не меряюсь, Сергей :) Оно мне сильно надо ? Давай пусть автор поста скажет, нафига ему это, а там и совет дадим.


 
Сергей М. ©   (2006-04-14 15:16) [19]


> Elen ©   (14.04.06 15:03) [12]



> Depender из Visual Studio показывает связи процесса с подпрограммами


Мало ли чего он показывает !

Конкретно же тот самый "Depender" показывает состояние тиаблиц импорта/експорта, и не более того.

А вызовет ли некий интересующий тебя процесс нкую интересующую тебя п/п в составе импортируемой - то бабушка надвое сказала.


 
Сергей М. ©   (2006-04-14 15:17) [20]


> Игорь Шевченко ©   (14.04.06 15:16) [18]


Не имею ничего против.
Спасибо за понимание.


 
Elen ©   (2006-04-14 15:42) [21]

Уважаемые господа! Рассказываю проблему :
У меня есть куча пользователей, обьединенных в локальную сеть. Есть файл-сервера, где хранится более-менее важная информация. Среди пользователей присутствуют некие продуманные личности еще не юзеры но уже не ламеры. И эти личности пихают на сервер в папки с важной информацией всякую чущь типа фильмов. Я не админ не могу закрыть доступ, тем более что в этих папках эти же личности хранят важные для работы сведения. Мне пришла в голову мысль : а что, если на уровне ядра отсекать копирования неугодные файлы. Мне посоветовали взять какой-нибудь FireWall и им отсекать, но :
1 Большинство таких программ не достаточно гибки при работе многих     пользователей в разных программах (вроде AutoCAD, Word...) с этими файлами в рабочих папках
2 Админы не согласятся поставить такой FireWall, а мне не хочется выгребать каждый день тонны мусора.
Я хочу написать свой отсекатель на моих условиях


 
Сергей М. ©   (2006-04-14 15:59) [22]


> Elen ©   (14.04.06 15:42) [21]


Ты, мил моя, поясни, при чем здесь "список функций и процедур и их адреса, которые использует указанный загруженный процесс" ..


 
Elen ©   (2006-04-14 16:12) [23]

Я думаю перехватить попытки создания, копирования файлов на самих компьютерах Юзеров, типа действия программы HideFolderXP, которая перехватывает функции вроде ZwQuerySystemInformation и не показывает указанные мной папки ни админам ни юзерам. Для этого нужно заменить Виндовые процедуры для процессов типа Windows Commander моими с анализом запрашиваемого действия над файлами. Программа пусть анализирует какие файлы юзер хочет обработать и принимает решения в зависимисти от спистка разрешенных для обработки типов файлов. Кстати Хуки типа SnapShot не помогут т.к. у некоторых юзеров есть програмки которые их обходят (это уже было опробовано админами, и затем забыто за неимением опыта у таковых).


 
Игорь Шевченко ©   (2006-04-14 16:18) [24]

Elen ©   (14.04.06 15:42) [21]

Я могу посоветовать администраторам включить аудит создания файлов и к тем, кто создал не те файлы, применять депремирование. То есть, подобная задача решается административными методами, а не программными, гораздо более действенно.


> Я не админ не могу закрыть доступ


В таком случае это не твоя проблема - кто и что где хранит.

Кстати, есть еще способ - следить за каталогами при помощи ReadDirectoryChangesW и анализировать файл по мере его появления по содержимому, на предмет нужности/ненужности. Ну и ненужные удалять...


 
BiN ©   (2006-04-14 16:31) [25]


> Elen ©   (14.04.06 15:42) [21]
>
> Уважаемые господа! Рассказываю проблему :


Я бы просто установил на файл-сервере квоты для каждого пользователя, ибо не дело админа-программиста определять степень важности хранимой информации.


 
Сергей М. ©   (2006-04-14 16:31) [26]


> Elen ©   (14.04.06 16:12) [23]


Рекомендую вместо галиматьи а-ля [21], не имеющей отношения к программингу, изложить задачу с т.з. программиста, а не черт-те какого юзера, даже гордо именующего себя "админом".


> Виндовые процедуры для процессов типа Windows Commander


Галиматья.


 
Elen ©   (2006-04-14 16:40) [27]

Админы забили на это БОЛЬШОЙ РЖАВЫЙ ГВОЗДЬ. А мне расхлебывать. Было такое предложение но они отмахались, типа "Делов полно".

> Кстати, есть еще способ - следить за каталогами при помощи ReadDirectoryChangesW и анализировать файл по мере его появления по содержимому, на предмет нужности/ненужности. Ну и ненужные удалять...


При копировании файлов больших размеров файл можно засечь до окончания его копирования. Если попытаться удалить такой файл система виснет (Проверено на себе). К тому же как мне использовать ReadDirectoryChangesW - как событие или в таймере? если в таймере то это гарантированный тормоз, а машины слабенькие, и с большим обьемом передаваемой информации могут не справляться.


 
Сергей М. ©   (2006-04-14 16:45) [28]


> мне расхлебывать


Тогда погуляй для начала по sysinternals.com.

Уверяю тебя - для думающего программера бесполезной эта прогулка не будет)


 
Elen ©   (2006-04-14 16:54) [29]

Благодарю за ссылку, Сергей. А на русском есть чего-то в этом роде? И кстати знает ли кто какие-нибудь описания API функций, которые обычно недокументированы? Где их можно найти (описания)?


 
Игорь Шевченко ©   (2006-04-14 16:55) [30]


> К тому же как мне использовать ReadDirectoryChangesW - как
> событие или в таймере?


Асинхронно.


> При копировании файлов больших размеров файл можно засечь
> до окончания его копирования.


Да, эта проблема в этом форуме решалась, воспользуйся поиском.


> и с большим обьемом передаваемой информации могут не справляться.


Там, собственно, объемов-то нету, передаются только изменения в файловой системе, а откуда там объемы возьмутся - только имена файлов.


 
Игорь Шевченко ©   (2006-04-14 16:56) [31]


> И кстати знает ли кто какие-нибудь описания API функций,
>  которые обычно недокументированы? Где их можно найти (описания)?
>


Зачем ? Для этих проблем все функции документированы.


 
Elen ©   (2006-04-14 17:02) [32]

Имеется ввиду Файл-сервер. Предположим на него удаленно через пять свитчей копируется пара файлов скажем AVI по 700М каждый. Я фиксирую первый из них уже на 10-20% копирования. Пытаюсь стереть на сервере... и сервер виснет (стереть имеется ввиду программно). Остальные пользователи, подключенные к серверу в эти моменты не могут работать. Теряют открытые наработки или не имеют доступ к серверу (Причем если работа идет в AutoCad, гаплык редактируемым проектам). Так что обьем важен, поэтому нужно присекать само начало копирования, а не отслеживать появления файлов


 
Elen ©   (2006-04-14 17:07) [33]

Нет Игорь. Оказывается не все. Когда начали рыться по Инету в поисках хоть какой нибудь документации, наткнулись на повторы, которые содержали описания так сказать самых популярных функций. После уже заглянув в ДЛЛ-ки Винды обнаружили там (естесственно) гораздо больше возможностей, а значит и лазеек. Хотелось бы о них поподробнее...


 
Игорь Шевченко ©   (2006-04-14 17:18) [34]

Elen ©   (14.04.06 17:07) [33]


> После уже заглянув в ДЛЛ-ки Винды обнаружили там (естесственно)
> гораздо больше возможностей, а значит и лазеек.


Для копирования файлов ? :) Не верю.

Кроме того, первое действие в случае неизвестного имени фукнции - это поиск ее в гугле.

Elen ©   (14.04.06 17:02) [32]

И все-таки, административными мерами лучше. Ну или с некой периодичностью сканировать каталоги и удалять все ненужное с посылкой оповещения руководству.


 
Elen ©   (2006-04-17 07:49) [35]

Ладно Господа! Благодарю за нелишнюю критику. Думаю что Вы дали полезные ответы на мой вопрос. На этом закрываю эту тему. Всем спасибо. До встречи



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.012 c
2-1153155041
chuk1
2006-07-17 20:50
2006.08.06
ToolBar


15-1152376506
OSokin
2006-07-08 20:35
2006.08.06
Бубен


1-1150904746
NORDmen
2006-06-21 19:45
2006.08.06
регулярные выражения разбор строк


2-1152855604
pushkin42
2006-07-14 09:40
2006.08.06
Совместимость NT систем???


6-1143027284
Dysan
2006-03-22 14:34
2006.08.06
длина строки с параметрами в TidHttp





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский