как узнать разрядность dll файла
Как я могу проверить DLL-файл Windows, чтобы определить, является ли он 32 бит или 64 бит? [дубликат]
этот вопрос уже есть ответ здесь:
Я хотел бы написать тестовый сценарий или программу, которая утверждает, что все DLL-файлы в данном каталоге имеют определенный тип сборки.
Я бы использовал это как проверку здравомыслия на конец процесса сборки на SDK, чтобы убедиться, что 64-разрядная версия каким-то образом не получила некоторые 32-разрядные DLL-файлы в нем и наоборот.
есть ли простой способ посмотреть на DLL-файл и определить его тип?
решение должно работать на xp32 и xp64.
5 ответов
подробности
DLL использует исполняемый формат PE, и не слишком сложно прочитать эту информацию из файла.
посмотреть этот статья MSDN о формате файла PE обзор. Вам нужно прочитать заголовок MS-DOS, а затем прочитать IMAGE_NT_HEADERS структура. Это содержит IMAGE_FILE_HEADER структура которая содержит информацию вам в члене машины который содержит одно из следующего значения
эта информация должна быть с фиксированным смещением в файле, но я все равно рекомендую обойти файл и проверить подпись заголовка MS-DOS и IMAGE_NT_HEADERS, чтобы убедиться, что вы справитесь с любыми будущими изменениями.
используйте ImageHelp для чтения заголовков.
вы можете также используйте API для ImageHelp для этого-загрузите DLL с LoadImage и LOADED_IMAGE структура, которая будет содержать указатель на структуру IMAGE_NT_HEADERS. Освободите LOADED_IMAGE с ImageUnload.
. или адаптировать этот грубый Perl скрипт
вот грубый скрипт Perl, который выполняет работу. Он проверяет, что файл имеет заголовок DOS, а затем считывает смещение PE из IMAGE_DOS_HEADER 60 байтов в файл.
затем он стремится к началу части PE, читает подпись и проверяет ее, а затем извлекает значение, которое нас интересует.
грубым способом было бы вызвать dumpbin с опцией headers из средств Visual Studio в каждой DLL и искать соответствующий вывод:
вы можете увидеть пару подсказок в этом выводе, что это 32-битная DLL, включая значение 14C, которое упоминает пол. Должно быть легко найти в сценарии.
Если у вас Cygwin установлен (который я настоятельно рекомендуем по разным причинам), вы можете использовать утилиту «файл» в DLL
который дал бы такой результат:
зависимость Walker рассказывает все (ну почти). http://www.dependencywalker.com/
насколько я помню, довольно просто увидеть все зависимости, т. е. модули dll, и начиная с appl. является суммой зависимостей, которые можно определить, является ли она полной x64, x32(x86) или немного каждой.
тип процессора, который модуль был построен для is в столбце «CPU». Большинство 64-разрядных aps все еще немного каждого, но 32-разрядный ap w/b все x86.
красивая программа для вундеркиндов / программистов, и это бесплатно.
просто запустите его и загрузите файл DLL:
в приведенном выше примере загруженная DLL является 32-разрядной.
Как узнать 32 или 64 битная программа?
Иногда необходимо узнать, является ли файл 32 или 64 битной программой прежде, чем его запустить или устанавливать. На веб-сайте источника не указана разрядность программы. Или, может, у вас в дистрибутивах и каталогах с портативными программами находятся приложения, которые никак не помечены, а вам необходимо знать на каких системах их можно запустить. Или же же вам просто хочется убедится, по собственным причинам, в том, что программа имеет ту или иную разрядность. Какие бы причины не были, у вас всегда будет в запасе два способа это проверить.
Примечание: Учтите, что вполне возможна ситуация, когда инсталлятор 32- разрядный, а программа 64 разрядная. Верно и обратное.
Программа EXE 64bit Detector для определения 32 или 64 бита
Существует множество способов узнать, как файл был скомпилирован. Например, технические специалисты могут использовать шестнадцатеричные редакторы для прочтения бинарных кодов. Но, обычным пользователям такой способ покажется чересчур сложным. Поэтому, вы всегда можете воспользоваться программой под названием «EXE 64bit Detector». Этот инструмент предназначен для запуска в командной строке от имени администратора. Даже если вы слабо знакомы с командной строкой, то не волнуйтесь, данный инструмент очень легко использовать. Сайт разработчика и программу вы можете найти по этой ссылке (кнопка для скачивания в конце страницы). Но, предупреждаем, прежде, чем скачать утилиту, сайт несколько раз перенаправит вас. Поэтому будьте аккуратны и внимательны. Обращайте внимание по каким ссылкам вы щелкаете. Сказывается тяга задержать вас подольше у рекламных блоков, но, тем не менее, инструмент бесплатен и его достаточно скачать один раз. Утилита запускается во всех текущих версиях Windows.
Как уже говорилось, использовать утилиту очень просто. Откройте командную строку с правами администратора и введите следующую команду:
Параметр «-f» нужно обязательно указывать. И если Exe64bitDetector и тестируемая программа находятся в разных каталогах, то необходимо так же указывать полный путь до программы. Обратите внимание, что кроме информации о разрядности, программа так же показывает включены ли ASLR (случайное выделение места под модули в оперативной памяти), DEP (дополнительные проверки содержимого памяти для обеспечения безопасности) и SEH (механизм, предоставляющий доступ программе к таким исключениям, как деление на ноль, нарушения доступа к памяти и прочим). На рисунке ниже показан пример выполнения программы:
Пожалуй, единственная проблема данной утилиты заключается в том, что не каждый захочет возиться с командной строкой. Поэтому предлагаем вам более простой и не требующий дополнительного программного обеспечения метод определить разрядность программы.
Как проверить является ли файла 32 или 64 разрядным простым способом
Несмотря на то, что в 64-разрядной Windows существует два каталога для программ «Program files» (для 64-разрядных) и «Program files (x86)» (для 32-разрядных), наличие программы в том или ином каталоге не является достоверным признаком разрядности программы. Так как вы можете установить программу в любой каталог. Поэтому, стоит использовать следующий простой трюк:
Теперь, у вас всегда будут под рукой два способа, как узнать 32 или 64 битная программа.
Как проверить, является ли EXE-файл 32- или 64-битным в Windows 10
Установить десктопное приложение проще простого, главное, чтобы тип исполняемого файла соответствовал архитектуре процессора. На 64-битные системы можно устанавливать и 32— и 64-битные приложения, тогда как на 32-битные Windows возможна установка только 32-битных программ. Обычно в источниках указывается разрядность приложения, но вы легко можете узнать ее и сами, воспользовавшись консольной утилитой от Марка Руссиновича SigCheck.
Также вы можете распаковать утилиту в любое удобное расположение, но тогда при работе в командной строке придется каждый раз прописывать к ней полный путь.
Чтобы определить разрядность любого исполняемого файла, откройте командную строку или PowerShell и выполните команду следующего вида:
Команда вернет набор сведений о файле — описание, имя разработчика, версию и т.д.
Будет среди них и разрядность, указываемая в параметре MachineType.
Если на вашем компьютере установлен архиватор 7-Zip, воспользуйтесь для определения разрядности исполняемого файла им.
Разрядность будет показана в значении параметра CPU.
Dll файл в exe файле. Вшить dll libcurl
Проблема такая что приходится таскать всегда libcurl.dll с собой. Надо все носить в одном exe.
Как включить в exe файл файлы dll
как включить в exe файл файлы dll чтобы на других компьютерах при запуске программы не было ошибки.
Dll и EXE,как их связать?)Очь нада)
Всем привет.Вот пару дней наза занялся програмированием на C++.До этого в visual Basic мутил.
Как из DLL вызвать функцию, находящуюся в exe?
Плз. скажите, как из DLL вызвать функцию, находящуюся в exe’шнике. Плз.! Плз.! Плз.!
decrement, в заголовке PE.
Даже в текстовом редакторе видно:
x86: PE L
x64: PE d†
Можете помочь написать считывание с файла PE заголовка? Бо я в етом совсем ничего не понимаю
Добавлено через 10 часов 15 минут
А так будет правильно.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как отключить dll от exe. Исходников нет
Задача запустить приложение без dll которые нужны для его запуска знаю что приложение на c++ и.
Injection EXE/DLL или как написать чит/античит
Привет всем. Вот наднях с другом решились взяться за дельце и сделать античит для игрушки.. Но при.
Как извлечь из exe или dll все ресурсы, которые там содержаться?
Как извлечь из exe или dll все ресурсы, которые там содержаться? ICO,BMP,AVI,MPG. и так далее.
Установить программы в Windows 10 довольно просто. Вам всего лишь убедиться, что вы устанавливаете правильный тип приложения. Если вы используете 32-разрядную версию Windows, приложение тоже должно быть 32-разрядным. Аналогично, если вы используете 64-битную Windows, приложение должно быть 64-битным.
Хорошие разработчики приложений не только предоставляют ссылки на разные версии, они также соответственно разрядности называют EXE-файл, чтобы пользователи по названию смогли определить, 32-битный или 64-битный. Вы удивитесь, но не существует быстрого способа проверить, является ли EXE 32-битным или 64-битным.
Что такое разрядность
Более подробно о разрядности мы рассказывали в статье «Что такое разрядность системы Windows».
Как узнать разрядность программы в Windows
Я покажу 3 простых способа проверить, является ли программа 32 или 64-битной. Первый способ самый простой. Другие методы определения разрядности требуют установки приложений, однако оба приложения бесплатны, и есть вероятность, что одно из них уже установлено в вашей операционной системе.
Это способ узнать разрядность файла программы не требует установки дополнительных утилит.
Не забудьте снять флажок «Запускать эту программу в режиме совместимости для:»
Скачайте бесплатную утилиту командной строки SigCheck и распакуйте ее в папку C:\Windows.
Откройте командную строку с обычными правами пользователя и введите следующую команду: