← →
Franzy ( 2009-04-21 17:42 ) [0]
Написал прогу, на моем компе нормально работает, принес на комп, где дельфи нет и никогда не стояло, пробую запустить, выдает сообщение, что требуется такая-то библиотека. В связи с чем вопрос, а точнее целых два:
1) Можно ли сделать так, чтобы при компиляции весь код из таких библиотек компилировался в основную прогу, т.е. чтобы эти длл-ки не требовались
Попробую прогу от Rouse.
эта DLL к Delphi не относится
← →
Franzy ( 2009-04-23 12:35 ) [8]
Есть подозрение, что используемая длл тоже какие-то свои длл использует.
← →
Franzy ( 2009-04-23 13:38 ) [9]
Да, так и есть. tdump длл-ки показал, что она обращается к этой самой dforrt.dll. А еще к какой-то MSVCRT.dll:
IMPORT: MSVCRT.dll=.»malloc»
IMPORT: MSVCRT.dll=.»_adjust_fdiv»
IMPORT: MSVCRT.dll=.»_initterm»
IMPORT: MSVCRT.dll=.»free»
Это родная виндовская или тоже какая-то левая?
Как пользоваться IDA PRO. Как найти оффсеты в любой игре
Левая — MicroSoft VC RunTime
Источник: delphimaster.net
как узнать какие библиотеки использует программа windows
Windows: Узнать технологии/библиотеки/фрэймворки используемые приложением?
Какие библиотеки подлинкованы статически покажет куча специализированных утилит.
Это и вышеупомянутый Process Explorer и консольные утилиты, идущие с компиляторами.
Для продуктов от Borland/CodeGear/Embarcadero это tdump.exe, для продуктов от Microsoft — dumpbin.exe с ключём /exports.
Если файл экспортирует функции, то есть смысл поискать по именам экспортированных функций в Google. Подопытный может оказаться чьим-либо плагином.
Так же не лишне будет посмотреть ресурсы внутри исполняемого файла.
Наличие ресурсов с именами DVCLAL и PACKAGEINFO — признак того, что скорее всего приложение создано либо в Delphi либо в C++Builder.
По содержимому PACKAGEINFO можно узнать имена модулей, использованных в программе и идентифицировать по ним использованные библиотеки компонентов.
Наличие же ресурсов в секции TYPELIB укажет нам на то, что что данный файл может являться COM-сервером.
Некоторые программы (например, malware) бывают упакованы специальными пакерами, многие из них поможет распознать PEiD.
Часто для пакеров существуют свободно распространяемые распаковщики. В этом случае после распаковки можно продолжить изучение файла.
Это, конечно, далеко не полный список методов узнать подробности об интересующей нас программе.
Чем больше у вас будет опыта в данной области, тем проще и быстрее вы получите интересующую вас информацию.
Как узнать какие библиотеки использует программа windows
Написал прогу, на моем компе нормально работает, принес на комп, где дельфи нет и никогда не стояло, пробую запустить, выдает сообщение, что требуется такая-то библиотека. В связи с чем вопрос, а точнее целых два:
1) Можно ли сделать так, чтобы при компиляции весь код из таких библиотек компилировался в основную прогу, т.е. чтобы эти длл-ки не требовались
2) Если нет, то как узнать, какие библиотеки может потребовать прога, чтобы распространять их вместе с прогой?
> Если нет, то как узнать, какие библиотеки может потребовать
> прога, чтобы распространять их вместе с прогой?
Function GetAllProcesses2: Boolean;
Type
TEnumProcessModules = Function (hProcess: THandle; lphModule: LPDWORD; cb: DWORD; Var lpcbNeeded: DWORD): BOOL Stdcall;
TGetModuleFileNameExA = Function (hProcess: THandle; HMODULE: HMODULE; lpFileName: PAnsiChar; nSize: DWORD): DWORD Stdcall;
Var
EnumProcessModules : TEnumProcessModules;
GetModuleFileNameExA: TGetModuleFileNameExA;
hPSAPI : THandle;
Counter1 : LongWord;
pbNeeded : DWORD;
ModHndls : Array[0..1023] Of DWORD;
mbNeeded : DWORD;
ModulePath : String;
Begin
Result := False;
hPSAPI := LoadLibrary(«PSAPI.dll»);
If hPSAPI
Попробую прогу от Rouse.
> Franzy (22.04.2009 13:51:04) [4]
Данная задача решения не имеет.
> Написал прогу, на моем компе нормально работает, принес
> на комп, где дельфи нет и никогда не стояло
> НЕТ той длл, на отсутствие которой ругалась ось (dforrt.
> dll).
эта DLL к Delphi не относится
Есть подозрение, что используемая длл тоже какие-то свои длл использует.
Да, так и есть. tdump длл-ки показал, что она обращается к этой самой dforrt.dll. А еще к какой-то MSVCRT.dll:
IMPORT: MSVCRT.dll= .»malloc»
IMPORT: MSVCRT.dll= .»_adjust_fdiv»
IMPORT: MSVCRT.dll= .»_initterm»
IMPORT: MSVCRT.dll= .»free»
Это родная виндовская или тоже какая-то левая?
> Это родная виндовская или тоже какая-то левая?
Родство с этим модулем у «винды» того же колена, что и родство Делфи-приложений с можулем rtlXX.bpl
Так она родная для винды или нет? Или тоже из вижл студио?
> Franzy (23.04.2009 13:38:09) [9]
Т.е. она есть не везде и ее тоже надо включать вместе с dforrt.dll в комплект с экзишником?
Не надо.
Модуль поставляется штатно в составе дистрибутива, без него невозможна работа огромной кучи штатно поставляемого в составе ОС прикладного софта.
> Franzy (23.04.09 15:17) [16]
>
> Т.е. она есть не везде и ее тоже надо включать вместе с
> dforrt.dll в комплект с экзишником?
Если нужна MSVCRT.dll, то разумнее в процессе установки программы поставить еще м Microsoft Visual C++ 2008 Redistributable, ну или другой версии.
> Это родная виндовская или тоже какая-то левая?
Порядок поиска библиотеки динамической компоновки (DLL)
Система может содержать несколько версий одной библиотеки динамической компоновки (DLL). Приложения могут управлять расположением, из которого загружается DLL, путем указания полного пути или использования другого механизма, например манифеста. Если эти методы не используются, система выполняет поиск библиотеки DLL во время загрузки, как описано в этом разделе.
Факторы, влияющие на поиск
На то, что система осуществляет поиск библиотеки DLL, влияют следующие факторы:
Порядок поиска для приложений UWP
Прежде чем система будет искать библиотеку DLL, она проверяет следующее:
Если система должна искать модуль или его зависимости, она всегда использует порядок поиска для приложений UWP, даже если зависимость не является кодом приложения UWP.
Стандартный порядок поиска для приложений UWP
Если модуль еще не загружен или в списке известных библиотек DLL, система выполняет поиск в следующих расположениях в следующем порядке:
Если библиотека DLL имеет зависимости, система выполняет поиск зависимых библиотек DLL, как если бы они загружались только с именами модулей. Это справедливо, даже если первая библиотека DLL была загружена путем указания полного пути.
Альтернативный порядок поиска для приложений UWP
Если модуль изменяет стандартный порядок поиска, вызывая функцию LoadLibraryEx с параметром Load _ с _ измененным _ _ путем поиска, система выполняет поиск в каталоге указанного модуля вместо каталога вызывающего процесса. Система выполняет поиск в следующих расположениях в следующем порядке:
Порядок поиска для настольных приложений
Настольные приложения могут управлять расположением, из которого загружается DLL, путем указания полного пути, использования перенаправления DLLили манифеста. Если ни один из этих методов не используется, система выполняет поиск библиотеки DLL во время загрузки, как описано в этом разделе.
Прежде чем система будет искать библиотеку DLL, она проверяет следующее:
Если библиотека DLL имеет зависимости, система выполняет поиск зависимых библиотек DLL, как если бы они загружались только с именами модулей. Это справедливо, даже если первая библиотека DLL была загружена путем указания полного пути.
Если злоумышленник получает контроль над одним из каталогов, в котором выполняется поиск, он может поместить в этот каталог вредоносную копию библиотеки DLL. Способы предотвращения таких атак см. в разделе безопасность библиотеки динамической компоновки.
Стандартный порядок поиска для настольных приложений
Стандартный порядок поиска библиотек DLL, используемый системой, зависит от того, включен или отключен режим поиска «Защищенная библиотека DLL». Сейф Режим поиска библиотек DLL помещает текущий каталог пользователя в последующий порядок поиска.
Если сафедллсеарчмоде включен, порядок поиска выглядит следующим образом:
Если сафедллсеарчмоде отключен, то порядок поиска выглядит следующим образом:
Альтернативный порядок поиска для настольных приложений
Стандартный порядок поиска процесса также будет зависеть от вызова функции сетдллдиректори в родительском процессе перед началом текущего процесса.
Если указать альтернативную стратегию поиска, ее поведение будет продолжаться до тех пор, пока не будут найдены все связанные исполняемые модули. После того как система начнет обработку подпрограмм инициализации DLL, система вернется к стандартной стратегии поиска.
Если сафедллсеарчмоде включен, альтернативный порядок поиска выглядит следующим образом:
Если сафедллсеарчмоде отключен, альтернативный порядок поиска выглядит следующим образом:
Функция сетдллдиректори поддерживает альтернативный порядок поиска, если параметр лппаснаме задает путь. Альтернативный порядок поиска выглядит следующим образом:
Если параметр лппаснаме является пустой строкой, вызов удаляет текущий каталог из порядка поиска.
Сетдллдиректори эффективно отключает режим поиска в защищенных библиотеках DLL, пока указанный каталог находится в пути поиска. Чтобы восстановить защищенный режим поиска DLL на основе значения реестра сафедллсеарчмоде и восстановить текущий каталог в порядке поиска, вызовите сетдллдиректори с лппаснаме как null.
Порядок поиска с помощью флагов _ _ поиска «загрузить библиотеку «
Искомые каталоги зависят от флагов, указанных в сетдефаултдллдиректориес или LoadLibraryEx. Если используется более одного флага, поиск соответствующих каталогов выполняется в следующем порядке:
Если приложение не вызывает LoadLibraryEx с любыми флагами _ _ поиска в библиотеке нагрузки или не устанавливает порядок поиска DLL для процесса, система выполняет поиск библиотек DLL, используя стандартный или альтернативный порядок поиска.
Просмотр библиотек DLL и исполняемых файлов в окне «Модули» (C#, C++, Visual Basic, F#)
В процессе отладки в Visual Studio окно Модули отображает список используемых приложением библиотек DLL и исполняемых файлов ( .exe), а также сведения о них.
Окно «Модули» недоступно при отладке SQL и скриптов.
Использование окна модулей
Чтобы открыть окно «Модули» во время отладки, выберите Отладка > Окна > Модули или нажмите клавиши CTRL+ALT+U.
По умолчанию модули в окне Модули упорядочены в порядке загрузки. Чтобы выполнить сортировку по любому столбцу окна, щелкните заголовок соответствующего столбца.
Загрузить символы
В столбце Состояние символов в окне Модули показано, для каких модулей загружены отладочные символы. Если здесь указано состояние Загрузка символов пропущена, Невозможно найти или открыть PDB-файл или Загрузка отключена параметром включения и исключения, вы можете загрузить символы вручную. Дополнительные сведения о загрузке и использовании символов см. в статье Указание файлов символов (.pdb) и исходных файлов.
Загрузка символов вручную
В окне Модули щелкните правой кнопкой модуль, для которого не загружены символы.
Выберите Сведения о загрузке символов, чтобы узнать, почему символы не были загружены.
Щелкните Загрузить символы, чтобы загрузить символы вручную.
Если символы не загружаются, выберите Параметры символов, чтобы открыть диалоговое окно Параметры и указать или изменить расположение для загрузки символов.
Вы можете скачать символы с общедоступных серверов символов Майкрософт или других аналогичных серверов, а также загрузить их из локальной папки на компьютере. Дополнительные сведения см. в разделе об указании расположения символов и поведения при загрузке.
Изменение параметров поведения при загрузке символов
В окне Модули щелкните правой кнопкой мыши любой модуль.
Выберите Параметры символов.
Выберите Загрузить все символы или выберите конкретные модули.
Нажмите кнопку ОК. Изменения вступят в силу при следующем сеансе отладки.
Изменение поведения загрузки символов для конкретного модуля
В окне Модули щелкните правой кнопкой мыши требуемый модуль.
В контекстном меню установите или снимите флажок Всегда загружать автоматически. Изменения вступят в силу при следующем сеансе отладки.
Как работать с библиотеками в Windows и зачем они нужны
Как это обычно бывает, многие нововведения зачастую забываются и обнаруживаются абсолютно случайно спустя много лет. Так случилось и с библиотеками, которые появились еще в Windows 7, и с тех пор есть во всех выходящих ОС от Microsoft.
Что это и зачем нужно? Ну, что такое папка знают, думаю, все пользователи ПК. Но часто бывает, что нужная информация хранится сразу в нескольких папках, а объединить их в одну по каким-то причинам не удобно. В таком случае на помощь и приходят библиотеки — по сути это виртуальное объединение нескольких папок в одну, причем пути до них при этом не меняются.
Создать библиотеку несложно — нужно открыть проводник и в его адресной строке написать слово «Библиотеки», после чего нажать Enter:
Теперь нажмите на пустом месте правой кнопкой мыши > Создать > Библиотека:
Назовите ее и перенесите в любое удобное место: например, можно сделать ярлык на нее в любой папке, или закрепить на панели быстрого доступа:
Для того, чтобы добавить в нее папку, откройте ее двойным щелком мыши и нажмите на кнопку «Добавить папку»:
Для того, чтобы добавить еще несколько папок в библиотеку, нажмите на нее правой кнопкой мыши > Свойства, и в открывшемся окне нажмите на кнопку «Добавить»:
В итоге библиотека будет выглядеть как-то так:
Источник: windorez.ru
Как узнать, какие DLL использует тот или иной процесс?
Как узнать, какие DLL использует тот или иной процесс?
Рязанцев задал(а) этот вопрос 28 июля 2012
Ответы:
Cinick | 30 июля 2012, 19:16
Process Explorer вам в помощь.
yang | 28 июля 2012, 22:35
Из множества программ, показывающих загруженные процессами модули, лучшей, пожалуй, является Process Explorer. В AVZ есть утилита «Диспетчер процессов», выполняющая ту же функцию. Наряду с этой функцией в SIW присутствует и обратная — определение всех процессов, использующих загруженный модуль. Из утилит, показывающих структуру зависимостей для любого исполняемого файла, можно порекомендовать Dependency Walker и плагин для Total Commander — Fileinfo (http://wincmd.ru/plugring/fileinfo.html).
Anlrey | 28 июля 2012, 19:47
Я использую Anvir Task Manager. На вкладке «Процессы» кликнете 2 раза интересующий вас процесс- откроется окно «Детальная информация». В этом окне в баре нажимаем DLL.
- Не могу удалить файлы в Local Setting/temp
- Во время Unattend установки Windows XP пропускает выбор раздела жёсткого диска
- Проблема с включением ПК
- Почему компьютер стал долго выключаться?
- Microsoft Anna — нужно удалить и вставить туда другой голос
- Возврат игр в ХР
- Все вопросы этой рубрики
Источник: www.cdmail.ru