У меня есть вопрос, связанный с вызовом функций в DLL файле. Если я хорошо понимаю, в DLL файле мы можем определить множество различных функций, которые могут быть вызваны файлом.exe. Например, функции, которые могут быть вызваны из файла a.dll включают в себя следующие функции:
void fun1(int k); int fun2(float value); float fun3(double sig);
Для конкретной программы, например, a.exe , он может вызывать только fun1 функцию в a.dll без использования других функций. Тогда мой вопрос: как я могу узнать, какие функции вызывается при запуске программы.exe.
feelfree 07 янв. 2013, в 17:09
Поделиться
Поделиться:
2 ответа
Лучший ответ
Вы можете проверить таблицу символов исполняемого файла для импортированных символов. Для окон ( .exe файлов) вы можете использовать DUMPBIN программу DUMPBIN с /IMPORTS как описано здесь. Обновление. Как упоминалось в комментариях, исполняемый файл может загружать библиотеки DLL и получать доступ к ним динамически таким образом, который не создает символы во время компиляции.
Скачать vorbis.dll для GTA San Andreas и других игр виндов
Например, вызывая GetProcAddress после загрузки DLL с помощью LoadLibrary. В этом случае символ не будет присутствовать, а DUMPBIN не будет его перечислять, но функция может быть вызвана или не вызвана. Если вы знаете более или менее о том, как работает exe, и он, похоже, не работает динамически (например, загружает код из DLL плагинов), то может быть безопасно предположить, что динамическая загрузка не происходит. Кроме того, если таблица символов exe показывает некоторые функции из данной DLL, маловероятно, что exe динамически обращается к функциям из той же DLL. Кроме того, тот факт, что функция отображается в таблице символов, не гарантирует, что она будет вызвана exe, но в любом обычном статическом случае это делает ее весьма вероятной.
sinelaw 07 янв. 2013, в 12:50
Поделиться
Это не работает для программы, которая использует pinvoke. Привязка происходит во время выполнения через GetProcAddress.
Hans Passant 07 янв. 2013, в 16:00
sinelaw 07 янв. 2013, в 17:31
Вы можете использовать Dependency Walker
«Dependency Walker — бесплатная утилита, которая сканирует любой 32-разрядный или 64-битный Windows-модуль (exe, dll, ocx, sys и т.д.) И строит иерархическую древовидную диаграмму всех зависимых модулей. Для каждого найденного модуля он перечисляет все функции, которые экспортируются этим модулем, и какая из этих функций фактически вызывается другими модулями. В другом представлении отображается минимальный набор требуемых файлов, а также подробная информация о каждом файле, включая полный путь к файлу, базовый адрес, номера версий, тип машины, отладочная информация и т.д. «.
888 07 янв. 2013, в 13:19
Поделиться
Ещё вопросы
- 0 преобразование массива JavaScript в HTML-таблицу в новом окне по клику
- 0 jQuery Click Event на мобильном телефоне
- 0 Странная проблема со смещенной вершиной в jquery
- 0 База данных для галереи изображений Node.js
- 0 Как отключить прямой URL-адрес, если он не связан с другой страницей?
- 0 ng-repeat возвращает TypeError: невозможно прочитать свойство ‘insertBefore’ из null
- 0 Нужен запрос для сортировки значений из одной таблицы на основе значений другой
- 1 Примените GDB FrameDecorator при степпинге
- 0 Как выровнять навигационную панель по нижней части окна без зазора между кнопками и краем окна
- 0 Стиль последних детей последнего ребенка
- 1 Java HttpGet, слишком много открытых файлов в сервисной ошибке
- 0 Повреждение памяти при закрытии Unix Socket
- 0 Как настроить высоту угловых данных на основе данных
- 0 Возврат через все функции
- 1 Счетчик значений по группе не показывает счетчик значений NULL / NA в пандах
- 0 Отдельные файлы для каждого контроллера в Angular.js
- 0 Чтение изображений из div в контроллере
- 0 SQL-запрос принимает январь месяц как 13 вместо 01
- 0 удалить элемент из локального хранилища
- 0 AngularJS-контроллер не работает в v1.4.1
- 0 jQuery — объект Animate, которому был присвоен случайный идентификатор
- 0 C ++ создает расширяемый массив с использованием указателей
- 0 как перейти на страницу без углов в транспортире? [Дубликат]
- 0 Создайте объект JSON динамически Angular
- 1 Получить адрес отправителя SMTP из нового открытого почтового инспектора Outlook с C # (VSTO или погашение), когда настроено несколько учетных записей
- 1 проверка индекса вне диапазона с массивом
- 0 Агрегация не работает в Mongoose с Match и Group
- 1 AndroidAnnotations + Instant App — сгенерированный класс .R не найден
- 0 Аутентификация пользователя с использованием сессий с PHP
- 0 Boost Unit Test: поймать неудачный тест
- 1 Ошибка при преобразовании кадра данных pandas в спарк Dataframe
- 0 JQuery Datatable Следующая кнопка работает неправильно
- 0 На моей доске объявлений PHP, как я могу вывести изображение в соответствии с соответствующим постом?
- 1 Java не может получить доступ к защищенной переменной во внутреннем классе
- 0 jQuery slideDown () после скрытия и слайда через 5 секунд
- 0 Linq Query не удалось объединить запись двух таблиц
- 1 PySpark — создать столбец на основе имен столбцов, указанных в другом столбце
- 1 Как получить пользовательский ввод в двух отдельных массивах?
- 0 cv :: putText в IplImages
- 0 AngularJS Directive Countup.JS получить данные из модели
- 0 Smarty, проходящий через массив
- 1 Поддержка векторной регрессии (SVR) не отображает граф в Ubuntu 18.04 LTS
- 1 C # x509Certificate2 не может быть создан
- 0 AngularJS Ionicframework бесконечный свиток ПОЛУЧИТЬ ЗАПРОС списка 10 одновременно
- 1 Поток данных Apache Beam / GCP: чтение видео / файлов изображений
- 0 MySQL поиск дубликатов имен файлов с разными расширениями
- 0 Ошибка типа Javascript: oauth не является конструктором
- 1 стиль соединения arc3 (FancyArrowPatch) и путь CURVE3 — две квадратичные кривые Безье, разные результаты?
- 0 PHP — сохранение сессии в запросе каждый раз, когда пользователь загружает запрос
- 1 получение покрытия кода через specflow
Источник: overcoder.net
+50 FPS в Доте 2 за 10 секунд
Как узнать какие DLL использует программа
Когда вы запускаете программу на своём компьютере, она использует различные файлы и библиотеки. Иногда может случиться так, что некоторые из этих файлов начинают работать не так, как они должны, и тогда вы должны знать, как именно проверить, какие DLL-файлы использует программа.
Как узнать, какую dll использует программа
БЫСТРЫЕ ПУБЛИКАЦИИ СТАТЕЙ ПРЕДОСТАВЛЯЮТ ИНФОРМАЦИЮ НАПРЯМУЮ ОТ ОРГАНИЗАЦИИ ПОДДЕРЖКИ МАЙКРОСОФТ. ИНФОРМАЦИЯ, СОДЕРЖАЩАЯСЯ ЗДЕСЬ, СОЗДАНА В ОТВЕТЕ НА ВОЗНИКАЮЩИЕ ИЛИ УНИКАЛЬНЫЕ ТЕМЫ ИЛИ ПРЕДНАЗНАЧЕНА ДЛЯ ДОПОЛНЕНИЯ ДРУГОЙ ИНФОРМАЦИИ О БАЗЕ ЗНАНИЙ.
Симптом
Process Explorer — это утилита, предоставляющая информацию о том, какие дескрипторы и библиотеки DLL открыты для каждого процесса. В контексте устранения неполадок Outlook Process Explorer обычно используется для определения того, есть ли у вас какие-либо сторонние библиотеки DLL, работающие в процессе Outlook.exe. Это важный шаг, поскольку он повышает вероятность того, что надстройки или другое программное обеспечение на вашем компьютере могут вызывать проблемы в Outlook.
В этой статье содержится подробная информация о том, как можно использовать Process Explorer для вывода всех DLL-файлов, запущенных в рамках процесса Outlook.exe.
Дополнительная информация
Получение Process Explorer
Первое, что нужно сделать, это получить последнюю версию Process Explorer. Его можно загрузить со следующего сайта Microsoft TechNet:
Обязательно прочитайте информацию на этой странице, чтобы познакомиться с этим инструментом.
Запуск обозревателя процессов
После загрузки и извлечения Process Explorer выполните следующие действия, чтобы собрать список библиотек DLL, работающих в рамках процесса Outlook.exe.
1. Запустите Outlook.
2. Дважды щелкните Procexp.exe, чтобы запустить Process Explorer.
3. Убедитесь, что в меню «Вид» установлен флажок «Показать нижнюю панель».
4. Нажмите CTRL + D или выберите Вид – Нижняя панель – DLL, чтобы включить режим просмотра DLL.
5. В верхней панели Process Explorer прокрутите список файлов и выберите Outlook.exe.
6. После того, как список библиотек DLL, запущенных в Outlook.exe, появится на нижней панели, нажмите «Сохранить как» в меню «Файл».
7. Сохраните файл как Outlook.exe.txt.
Анализ вывода Process Explorer
Выходной текстовый файл представляет собой текстовый файл с разделителями табуляцией, который лучше всего открывать в Microsoft Excel, чтобы вы могли использовать функцию фильтра для быстрого поиска всех загруженных библиотек сторонних производителей.
1. Запустите Microsoft Office Excel и откройте файл Outlook.exe.txt.
2. В Мастере импорта текста используйте следующие параметры:
• Общий формат данных столбца. 3. Прокрутите лист вниз и найдите следующую строку:
Имя Описание Название компании Версия
Это список всех dll (Microsoft и сторонних производителей), работающих в рамках процесса Outlook.exe.
4. Выберите ячейку с именем прямо над списком DLL и включите функцию фильтра.
5. Щелкните раскрывающийся список фильтров в поле «Имя», а затем настройте текстовый фильтр со следующими параметрами:
Имя — содержит — .dll
6. Выберите раскрывающийся список фильтров в поле «Название компании» и снимите флажки с «Microsoft».
Идентификация библиотек Microsoft и сторонних библиотек
Отфильтрованный список dll, отображаемый с помощью описанных выше шагов, будет содержать сторонние dll, работающие в Outlook. Вы можете проверить столбец «Название компании», чтобы определить поставщика, ответственного за файл dll.
В списке фильтров dll есть также некоторые dll, поставляемые с Outlook, которые не отображают «Microsoft» в столбце «Название компании». Чтобы идентифицировать эти библиотеки Microsoft DLL, выполните следующие действия:
1. Запустите Outlook 2010.
2. Перейдите на вкладку «Файл» на ленте, затем нажмите кнопку «Параметры».
3. В диалоговом окне «Параметры Outlook» нажмите «Надстройки».
4. Чтобы изучить надстройки COM, выберите надстройки COM в раскрывающемся списке «Управление» и нажмите «Перейти».
5. Выберите каждую надстройку в диалоговом окне «Надстройки COM», а затем проверьте имя файла .dll в разделе «Расположение: информация» в нижней части диалогового окна. В названии надстройки должно быть указано, создан ли файл dll корпорацией Майкрософт.
1. Запустите Outlook 2007.
2. В меню «Инструменты» нажмите «Центр управления безопасностью».
3. В Центре управления безопасностью нажмите Надстройки.
4. Чтобы изучить надстройки COM, выберите надстройки COM в раскрывающемся списке «Управление» и нажмите «Перейти».
5. Выберите каждую надстройку в диалоговом окне «Надстройки COM», а затем проверьте имя файла .dll в разделе «Расположение: информация» в нижней части диалогового окна. В названии надстройки должно быть указано, создан ли файл dll корпорацией Майкрософт.
• Outlook 2003 и более ранние версии
1. Запустите Outlook 2003.
2. В меню «Инструменты» нажмите «Параметры».
3. На вкладке «Другое» нажмите «Дополнительные параметры».
4. Нажмите Надстройки COM.
5. Выберите каждую надстройку в диалоговом окне «Надстройки COM», а затем проверьте имя файла .dll в разделе «Расположение: информация» в нижней части диалогового окна. В названии надстройки должно быть указано, создан ли файл dll корпорацией Майкрософт.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ
MICROSOFT И/ИЛИ ЕЕ ПОСТАВЩИКИ НЕ ДАЮТ ЗАЯВЛЕНИЙ ИЛИ ГАРАНТИЙ В ОТНОШЕНИИ ПРИГОДНОСТИ, НАДЕЖНОСТИ ИЛИ ТОЧНОСТИ ИНФОРМАЦИИ, СОДЕРЖАЩЕЙСЯ В ДОКУМЕНТАХ И СООТВЕТСТВУЮЩИХ ГРАФИКАХ, ОПУБЛИКОВАННЫХ НА ЭТОМ ВЕБ-САЙТЕ («МАТЕРИАЛЫ») ДЛЯ КАКИХ-ЛИБО ЦЕЛЕЙ. МАТЕРИАЛЫ МОГУТ СОДЕРЖАТЬ ТЕХНИЧЕСКИЕ НЕТОЧНОСТИ ИЛИ ОПЕЧАТКИ И МОГУТ БЫТЬ ПЕРЕСМОТРЕНЫ В ЛЮБОЕ ВРЕМЯ БЕЗ УВЕДОМЛЕНИЯ.
В МАКСИМАЛЬНОЙ СТЕПЕНИ, РАЗРЕШЕННОЙ ПРИМЕНИМЫМ ЗАКОНОДАТЕЛЬСТВОМ, МАЙКРОСОФТ И/ИЛИ ЕЕ ПОСТАВЩИКИ ОТКАЗЫВАЮТСЯ И ИСКЛЮЧАЮТ ВСЕ ЗАЯВЛЕНИЯ, ГАРАНТИИ И УСЛОВИЯ, ЯВНО ЯВНЫЕ, ПОДРАЗУМЕВАЕМЫЕ ИЛИ УСТАНОВЛЕННЫЕ ЗАКОНОМ, ВКЛЮЧАЯ, ПОМИМО ПРОЧЕГО, ЗАЯВЛЕНИЯ, ГАРАНТИИ ИЛИ УСЛОВИЯ ПРАВА ПРАВА НАРУШЕНИЕ ПРАВ, УДОВЛЕТВОРИТЕЛЬНОЕ СОСТОЯНИЕ ИЛИ КАЧЕСТВО, КОММЕРЧЕСКАЯ ПРИГОДНОСТЬ И ПРИГОДНОСТЬ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ В ОТНОШЕНИИ МАТЕРИАЛОВ.
Если у меня есть исполняемый файл Windows, как узнать, какие библиотеки DLL он будет загружать?
Я просто говорю о том, какие из них будут загружаться статически, а не о тех, которые можно загрузить динамически с помощью чего-то вроде LoadLibrary.
10 ответов 10
dumpbin — это инструмент, поставляемый с VC++.
Чтобы узнать, какие библиотеки DLL будет импортировать программа:
- Открыть Visual Studio
- Инструменты для пунктов меню | Командная строка Visual Studio
- перейдите в папку с исполняемым файлом
- dumpbin/depends any.exe
Чтобы узнать, какие функции (и библиотеки DLL) будут импортированы, используйте
Это лучший ответ. К сожалению, этот инструмент показывает только библиотеки DLL, загруженные непосредственно для .exe, а не библиотеки DLL, от которых косвенно зависит исполняемый файл.
Есть утилиты, которые сделают это за вас.
Раньше я использовал инструмент MS (depends.exe), который поставлялся с (я думаю) VB.:
VS2010 VS2012 VS2013 VS2015 Current
и, возможно, другие.
Откройте командную строку и введите следующую команду
список задач /m /fi «imagename eq netbeans.exe»
Вместо netbeans.exe введите любое имя вашего исполняемого файла.
Я использовал это, и это не дает мне полный список dll, которые он использует, есть куча dll crystalreports, которые использует мой exe, но я не вижу ни одного упомянутого в списке, напечатанном с помощью этой команды. Есть идеи?
Dependency Walker может помочь вам определить, какая библиотека .dll будет загружена.
Просто зайдите в командную строку и введите список задач /m , вы увидите список dll-файлов, используемых конкретной программой.
Да, это делает то, что вы говорите, однако, если исполняемый файл запускает несколько процессов, вы никогда не узнаете из командной строки, какой процесс был запущен исполняемым файлом, следовательно, вы не будете знать все зависимые dll от исполняемого файла.
Существует удобный инструмент под названием NDepend, который предоставит вам все зависимости DLL.
Зависимости. Современный обходчик зависимостей с открытым исходным кодом показывает, какие библиотеки DLL будут загружены исполняемым файлом Windows, и хорошо работает в современной Windows 10.
Он немного менее мощный, чем Dependency Walker, но последний может работать или не работать в Windows 10, поскольку последний раз он обновлялся в 2006 году. (Более новые версии Dependency Walker поставлялись в комплекте с некоторыми версиями Windows Development Kit для Windows 10. , но не больше.)
Преимущества: позволяет исследовать уже запущенный процесс (я не нашел возможности присоединить обходчик зависимостей к существующему процессу)
Если требуемый файл .DLL не найден ни в папке программы, ни в папке system32, вы получите окно системной ошибки с сообщением «Программа не может быть запущена, поскольку на вашем компьютере отсутствует XXXXX.dll. Попробуйте переустановить программу, чтобы устранить проблему» при попытке запустить программу.
Решить вышеуказанную проблему так же просто, как найти нужный файл .DLL или .OCX в Интернете и поместить его в папку программы. Если вам нужно повторно распространять программу без появления указанной выше ошибки, вы должны сначала узнать, каковы зависимости программного обеспечения. К счастью, есть стороннее программное обеспечение, которое может сканировать и сообщать вам зависимости программы. Вот 5 из них.
1. Обходчик зависимостей
Dependency Walker – это бесплатный портативный инструмент, который может анализировать любой модуль Windows, например EXE, DLL, OCX, SYS, и сообщать вам зависимости файла. Просто запустите программу, нажмите «Файл» > «Открыть» и выберите файл, который хотите проверить. В программе отобразится иерархическая древовидная диаграмма. Мощной функцией Dependency Walker является возможность обнаружения всех видов зависимостей, включая динамическую загрузку, отложенную загрузку, внедрение и т. д.
PeStudio на самом деле представляет собой инструмент, предназначенный для анализа исполняемых файлов с целью обнаружения любых аномалий, даже не запуская его на компьютере. Он может сообщить вам много информации о загруженном исполняемом файле, например, язык программирования, используемый для написания программы, результат сканирования Virustotal, хэш MD5/SHA1, архитектуру (32-разрядную или 64-разрядную), сертификаты, ресурсы, строки, и многое другое. Чтобы увидеть зависимости, просто посмотрите на импортированные библиотеки из иерархического дерева, и оно показывает различные типы зависимостей, такие как неявные, загруженные с задержкой и т. д.
3. MiTeC EXE-проводник
Преимуществом MiTeC EXE Explorer является возможность поддержки множества различных типов файлов, таких как исполняемые файлы, DLL, ActiveX, драйверы, кодеки, VxD, шрифты, заставки, пакеты Borland и даже апплеты панели управления! Чтобы проверить зависимость файла, сначала загрузите его в программу и проверьте вкладку «Импорт». Отчет можно сохранить в виде текстового файла из меню файла.
4. Обозреватель CFF
Несмотря на то, что существует более новая версия под названием PE Insider, созданная тем же автором CFF Explorer, мы по-прежнему предпочитаем старую версию, поскольку ее функции более полны, а более новая версия PE Insider представляет собой очень простую программу просмотра. Помимо встроенного обходчика зависимостей, CFF Explorer также поставляется с шестнадцатеричным редактором, идентификатором для проверки языка программирования, используемого для загруженного файла, быстрым дизассемблером, редактором ресурсов и даже компрессором UPX.
Дополнительный совет. Если вы хотите повторно распространять исполняемый файл вместе с зависимостями и убедиться, что они могут работать в большинстве операционных систем Windows, нет необходимости включать все обнаруженные зависимости, показанные упомянутыми выше инструментами. В большинстве случаев вам просто нужно будет включить только файлы DLL, которых нет в новой операционной системе Windows. Компания Nirsoft создала 3 информационных сайта, содержащих стандартный список файлов DLL по умолчанию, расположенных в каталоге system32 Windows XP, 7 и 8.
Файлы DLL представляют собой своего рода библиотеку, в которой есть разные типы кодов, которые могут использоваться одновременно разными программами. Как мы можем узнать и увидеть, какие файлы DLL используются программами на нашем ПК? Что ж, здесь мы поможем вам узнать, вы даже можете узнать, как запустить файл DLL как приложение Windows.
Прежде чем давать объяснение, следует подчеркнуть, что аббревиатура DLL происходит от библиотеки динамической компоновки на английском языке и представляет собой переведенную библиотеку динамической компоновки.
Программы, которые совместно используют коды, содержащиеся в файлах DLL, загружают эту информацию в память ЦП. Благодаря инструменту командной строки мы можем проверить, какие DLL-файлы используются. Мы также можем видеть, какие файлы запускает каждая программа.
Как узнать и посмотреть, какие файлы DLL используются программами на нашем ПК
Файлы DLL позволяют, среди прочего, оптимизировать эффективное использование памяти процессора. Разрешая повторное использование кода, он уменьшает место на жестком диске, необходимое для запуска одного и того же кода в нескольких программах.
В этом случае информация о запущенных библиотеках DLL может быть собрана из памяти. Кроме того, если он вам больше не нужен, вы можете удалить DLL-файл, используемый в Windows, всего за несколько шагов.
Чтобы получить доступ к этой информации, необходимо перейти в меню «Пуск» и нажать «Выполнить», чтобы получить доступ к инструменту командной строки. Когда откроется диалоговое окно, вы должны ввести буквы «cmd» (команда), чтобы дать «ввод» на «ОК».
При выполнении этого действия мы сможем получить доступ к диалоговому окну. Мы продолжаем вводить показанную команду, чтобы запросить информацию о файлах, которые наш компьютер запускает в данный момент в системе. Таким образом, все загруженные файлы DLL и запущенные приложения будут отображаться.
Какую команду использовать для поиска файлов DLL
Если мы хотим знать, какие файлы DLL загружаются конкретной программой, нам нужно немного расширить команду. Нам нужно ввести текст: tasklist /m/fi «imagename eq [имя программы]».
Как видите, в предыдущей команде имя программы выражения заключено в квадратные скобки.Это потому, что на самом деле между этими скобками мы должны написать название конкретной программы, которую мы хотим изучить.
Например, поместив: tasklist /m /fi «imagename eq winrare.exe», мы получим список файлов DLL, которые выполняются этим приложением.
Таким образом, мы всегда можем знать и видеть, какие файлы DLL используются программами на нашем ПК.
Знание о файлах DLL может помочь нам настроить наш ПК
Возможно, вы заметили, что при создании папки и ее настройке с помощью значка система Windows приводит нас к пути shell32.dll, представляющему собой динамическую библиотеку. Но это лишь одна из многих DLL, которые могут предоставить нам иконки. Есть и другие, которые даже содержат значки с гораздо более высоким разрешением.
- Служба блокировки экрана что это за программа и нужна ли она на андроид
- Как отключить браузер mi
- Как изменить дюймы на пиксели в фотошопе
- Ошибка Microsoft xna framework Terraria
- Драйвер для kyocera fs 1040 как установить драйвер
Источник: kompyuter-gid.ru