Jak mogę dowiedzieć się, który program zainstalował lub używa określonego pliku DLL?

9

Mam plik DLL w katalogu SYSTEM32 jednego serwera, którego nie jestem pewien, czy rzeczywiście go potrzebuję.

Google powiedziało mi, do czego jest zwykle używany, ale oprogramowanie nigdy nie zostało zainstalowane w tym systemie. Mimo to uważam za możliwe, że jeden z innych zainstalowanych produktów na serwerze mógł zawierać (i dlatego, prawdopodobnie, będzie wymagać) plik.

Przeszukałem w rejestrze nazwę pliku, a także kilka ciągów, które znalazłem w metadanych pliku, i nie mogłem znaleźć żadnych informacji. (Chociaż klucz ACMru przykuł moją uwagę, dopóki nie dowiedziałem się, do czego służy .)

Czy jest coś jeszcze, co mogę zrobić, aby sam system powiedział mi, który program zainstalował bibliotekę DLL i / lub jakie zainstalowane programy (jeśli w ogóle) będą z niego korzystać?

UWAGA: Sugestie dotyczące narzędzi są dobre, ale nie będę instalować ani uruchamiać żadnego dodatkowego oprogramowania w tym systemie. Muszę pracować z tym, co jest dostępne w domyślnej instalacji Server 2003.

Iszi
źródło

Odpowiedzi:

5

Sprawdziłbym datę umieszczenia go w systemie i porównałbym go z innymi plikami w systemie, aby uzyskać wskazówki. Wyszukiwanie powinno umożliwiać przeszukiwanie całego systemu według daty.

Również opublikowanie nazwy pliku tutaj pozwoli niektórym osobom, które mogą się z nim zapoznać, zidentyfikować go za Ciebie.

music2myear
źródło
Dzięki. Mogę opublikować nazwę pliku w innym pytaniu. Chciałem, aby ten był ogólny, aby uzyskać odpowiedzi, które mogłyby być użyte dla dowolnego pliku DLL.
Iszi
4

Możesz potencjalnie sprawdzić każdy plik .MSI w folderze% SystemRoot% \ Installer. Wszystkie (?) Programy, które są instalowane za pomocą instalatora Windows, dodają tutaj swój MSI, aby można je później odinstalować. W folderze jest zwykle mnóstwo rzeczy. Jeśli / Gdy znajdziesz dll wśród niezliczonych pakietów MSI, będziesz musiał odwzorować pakiet z powrotem na dobrze zdefiniowaną nazwę.

Aby dekompilować pliki msi za pomocą skryptu, możesz spróbować użyć tego narzędzia VBS http://www.hanselman.com/blog/HowToListAllTheFilesInAnMSIInstallerUsingVBSciript.aspx lub wypróbować program o nazwie MSIDiff (którego nigdy nie użyłem) http: //dennisbareis.com/msidiff.htm . Oczywiście, biorąc pod uwagę ograniczenia związane z brakiem konieczności instalowania narzędzi, te ostatnie nie będą konieczne w tym zakresie. Pierwszy zrobiłby to, gdyby zainstalowany był cscript.

To ostatnie narzędzie może wykonać mapowanie nazwy pakietu bez konieczności ręcznego przeszukiwania rejestru w poszukiwaniu odpowiedniego identyfikatora GUID lub pliku MSI. To pierwsze narzędzie można zmodyfikować, aby zrzucić nazwę pakietu, jeśli wiesz, do której tabeli / kolumny się odwoływać (nie wiem).

Skrypt VBS po prostu sprawdza plik MSI z perspektywy bazy danych. Kluczowa praca jest wykonywana za pomocą: database.OpenView („SELECT FileName FROM File”).

logiczny zakres
źródło
Czy nie jest to bardzo kosztowne, podobnie jak instalacja wszystkich z nich? W moim systemie Windows 8 jest to 412 elementów, w moim systemie Windows 7 jest to 559 i sądzę, że miał taką samą kwotę. Ponadto plik mógł nie pochodzić z msiinstalacji ...
Tamara Wijsman,
Tak, jest to kosztowne, ale w sytuacjach, w których chcesz poznać własność bez konieczności przewidywania migawek systemu przed i po, może to dać pewien wgląd. Możesz także zautomatyzować faktyczną funkcję dekompilacji i porównania (w końcu to tylko skrypt VBS). Zgadzam się, że nie jest to idealne rozwiązanie, ponieważ nie wszystkie pakiety są instalowane przez MSI, ale możesz mieć szczęście. Jak powiedziałeś, jest ich wiele, więc istnieje prawdopodobieństwo, że plik mógł przejść w ten sposób.
logiczny zakres
Zastanawiam się, czy istnieją narzędzia, które mogłyby po prostu zajrzeć do plików MSI, a nie je dekompilować / dekompresować. W każdym razie, w innym nowym pytaniu OP sprawiło, że mówimy o pliku, który jest już w naszych systemach od czasu instalacji ...
Tamara Wijsman,
Tom, jestem całkiem pewien, że ten vbs po prostu bada MSI z widoku bazy danych. MSI jest po prostu db. To narzędzie używa SQL do wyodrębnienia nazw plików z odpowiedniej tabeli. Nie „dekompiluje” go per se i powinienem był podać to w swoim poście. Poprawię.
logiczny zakres
1

Process Monitor może to zrobić za Ciebie. Wystarczy filtrować według nazwy DLL, a gdy program spróbuje go załadować, pojawi się wpis, który wspomina, który proces szuka i / lub uzyskuje dostęp do wspomnianej biblioteki DLL.

Powinieneś także spróbować zrobić dziennik rozruchu (włącz rejestrowanie rozruchu w menu, a następnie uruchom ponownie i ponownie otwórz monitor procesu), który jest niezbędny do przechwycenia programów i usług, które ładują go podczas rozruchu.

Tamara Wijsman
źródło
Co z nieaktywnymi programami? Wygląda na to, że musiałbym otworzyć każdy podejrzany program na komputerze i uważać na niego w Process Monitor.
Iszi
@Iszi: Jak wspomniano na czacie, wyliczenie ich lub ich instalatorów zajmie dużo czasu. Monitoruj pasywnie, jak wspomniano, aktywnie za pomocą Process Explorer. Lub szukaj jak wspomniano music2myear, co można łatwo zrobić za pomocą Search Everything.
Tamara Wijsman,