Как я могу узнать, какая программа установлена ​​или использует определенный файл DLL?

9

У меня есть файл DLL в каталоге SYSTEM32 одного сервера, который я не уверен, что мне действительно нужно.

Google сказал мне, для чего он обычно используется, но программное обеспечение никогда не устанавливалось в этой системе. Тем не менее, я считаю возможным, что один из других установленных продуктов на сервере мог включать (и, следовательно, предположительно, потребуется) файл.

Я выполнил поиск в реестре по имени файла, а также по ряду строк, найденных в метаданных файла, и не смог найти ничего информативного. (Хотя ключ ACMru действительно попался на глаза, пока я не выяснил, для чего он .)

Могу ли я сделать что-нибудь еще, чтобы сама система сообщала мне, какая программа установила DLL и / или какая установленная программа (ы) (если таковая имеется) будет использовать ее?

ПРИМЕЧАНИЕ. Рекомендации по использованию инструментов хороши, но я не буду устанавливать или запускать дополнительное программное обеспечение в этой системе. Мне нужно работать со всем, что доступно при установке по умолчанию Server 2003.

Iszi
источник

Ответы:

5

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

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

music2myear
источник
Спасибо. Я мог бы опубликовать имя файла в другом вопросе. Я хотел, чтобы это было универсальным, чтобы получить ответы, которые можно использовать для любого файла DLL.
Изи
4

Вы можете проверить каждый MSI-файл в папке% SystemRoot% \ Installer. Все (?) Программы, установленные с помощью установщика Windows, добавят сюда свой MSI, чтобы их можно было удалить позднее. Папка, как правило, содержит массу вещей. Если / как только вы найдете dll среди множества пакетов MSI, вам придется сопоставить пакет с четко определенным именем.

Чтобы декомпилировать MSI-файлы с помощью сценария, вы можете попробовать использовать этот инструмент VBS http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx или вы можете попробовать программу под названием MSIDiff (которую я никогда не использовал) http: //dennisbareis.com/msidiff.htm . Конечно, учитывая ограничения, связанные с отсутствием необходимости установки инструментов, последним не нужно будет работать в этом отношении. Первый будет, если cscript установлен.

Последний инструмент может выполнить сопоставление имени пакета для вас, не прибегая к ручному поиску в реестре соответствующего GUID или имени файла MSI. Первый инструмент можно изменить, чтобы вывести имя пакета, если вы знали, на какую таблицу / столбец ссылаться (я не знаю).

Сценарий VBS просто проверяет файл MSI с точки зрения базы данных. Работа с ключами выполняется с помощью: database.OpenView («SELECT FileName FROM File»).

logicalscope
источник
Разве это не очень дорого, как установка всех из них? На моем Windows 8 это 412 элементов, на моем Windows 7 это 559, и я думаю, что у него было такое же количество. Кроме того, файл, возможно, не пришел из msiустановки ...
Тамара Вийсман
Да, это дорого, но в ситуациях, когда вы хотите знать владельца, не имея предвидения, чтобы сделать снимок системы до и после, это может дать некоторое представление. Вы также можете автоматизировать функцию декомпиляции и сравнения (в конце концов, это всего лишь скрипт vbs). Я согласен, что это не идеальный вариант, так как не все пакеты устанавливаются через MSI, но вам может повезти. Как вы сказали, их много, поэтому есть вероятность, что файл мог пройти именно так.
logicscope
Интересно, есть ли инструменты, которые могли бы просто смотреть в файлы MSI, а не декомпилировать / декомпрессировать их. В любом случае, в другом новом вопросе, сделанном ОП, речь идет о файле, который уже находится в наших системах со времени установки ...
Тамара Вийсман
Том, я уверен, что этот VBS просто проверяет MSI из представления базы данных. MSI просто дб. Этот инструмент использует SQL для извлечения имен файлов из соответствующей таблицы. Это не «декомпилирует» само по себе, и я должен был указать это в своем посте. Я проверю.
logicscope
1

Process Monitor может сделать это за вас. Просто отфильтруйте по имени DLL, и когда программа попытается загрузить ее, появится запись, в которой будет указано, какой процесс ищет и / или обращается к упомянутой вами DLL.

Вам также следует попытаться создать журнал загрузки (включить ведение журнала загрузки в меню, затем перезагрузить компьютер и снова открыть монитор процессов), что необходимо для перехвата программ и служб, которые загружают его при загрузке.

Тамара Вийсман
источник
Что насчет неактивных программ? Кажется, мне придется открыть каждую подозрительную программу на компьютере и следить за ней в Process Monitor.
Изи
@Iszi: Как уже упоминалось в чате, перечисление их или их установщиков займет много времени. Либо монитор пассивно, как уже упоминалось, активно с Process Explorer. Или выполните поиск, как указано в music2myear, что можно легко сделать с помощью Search Everything.
Тамара Вийсман