Как запустить exe-файл в Astra Linux

Обновлено: 21.11.2024

Kaspersky Endpoint Security содержит множество различных бинарных модулей в виде динамически подключаемых библиотек, исполняемых файлов, конфигурационных файлов и файлов интерфейса. Злоумышленники могут заменить один или несколько исполняемых модулей или файлов приложения другими файлами, содержащими вредоносный код. Для предотвращения замены модулей и файлов Kaspersky Endpoint Security может проверять целостность компонентов программы. Приложение проверяет модули и файлы на наличие несанкционированных изменений или повреждений. Если модуль приложения или файл имеет неверную контрольную сумму, он считается поврежденным.

Проверка целостности выполняется для следующих компонентов приложения:

  • Пакет приложения
  • Пакет графического пользовательского интерфейса
  • Пакет Агента администрирования Kaspersky Security Center
  • Плагин управления Kaspersky Endpoint Security

Приложение проверяет целостность файлов в специальных списках, называемых файлами манифеста. Каждый компонент приложения имеет свой файл манифеста (integrity_check_manifest.xml), который содержит список файлов приложения, целостность которых важна для корректной работы этого компонента приложения. Имя файла манифеста одинаково для всех компонентов, но содержимое файлов манифеста отличается. Файлы манифеста имеют цифровую подпись, а также проверяется их целостность.

Проверка целостности компонентов приложения выполняется с помощью утилиты целостности_check_tool.

Утилита проверки целостности должна быть запущена под учетной записью с привилегиями root.

Для проверки целостности можно использовать либо утилиту, установленную вместе с приложением, либо утилиту, распространяемую на сертифицированном компакт-диске.

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

Утилита проверки целостности, установленная вместе с приложением, расположена по следующим путям:

  • Для проверки пакета программы, графического интерфейса пользователя и Агента администрирования – /opt/kaspersky/kesl/bin/integrity_check_tool.
  • Для проверки плагина администрирования Kaspersky Endpoint Security – каталог, в котором находятся исполняемые модули (DLL) плагина администрирования:
    • C:\Program Files\Kaspersky Lab\Kaspersky Security Center\Plugins\

    Файлы манифеста расположены по следующим путям:

    • /opt/kaspersky/kesl/bin/integrity_check.xml — для проверки целостности пакета приложения.
    • /opt/kaspersky/kesl/bin/gui_integrity_check.xml — для проверки целостности пакета графического интерфейса пользователя.
    • /opt/kaspersky/klnagent/bin/integrity_check.xml — для проверки Агента администрирования в 32-битных операционных системах.
    • /opt/kaspersky/klnagent64/bin/integrity_check.xml — для проверки Агента администрирования в 64-битных операционных системах.

    Чтобы проверить целостность компонентов приложения, выполните следующую команду:

    instrument_check_tool -v[|--verify] -m[|--manifest]

    По умолчанию используется путь к файлу целостности_check.xml. Этот файл находится в каталоге, из которого запускается утилита проверки целостности.

    Вы можете запустить утилиту со следующими необязательными настройками:

    • -V , --verbose — отображать подробную информацию о выполненных действиях и их результатах. Если не указать этот параметр, будут отображаться только ошибки, объекты, не прошедшие проверку, и сводка статистики проверки.
    • -L , --log-file , где – имя файла, используемого для протоколирования событий, происходящих при проверке целостности. По умолчанию события передаются в стандартный поток stdout.
    • -l , --log-level , где уровень детализации вывода события. Уровень детализации по умолчанию — 0 .

    Описание всех доступных параметров утилиты проверки целостности можно просмотреть в справке по параметрам утилиты, выполнив команду целостности_check_tool -h [--help].

    Результат проверки файлов манифеста отображается следующим образом:

    • SUCCEEDED — целостность файлов подтверждена (код возврата 0).
    • FAILED — целостность файлов не подтверждена (код возврата не равен 0).

    Если при запуске программы обнаружено нарушение целостности программы, графического пользовательского интерфейса или Агента администрирования, Kaspersky Endpoint Security регистрирует событие IntegrityCheckFailed в журнале событий и в Kaspersky Security Center.

    Добавьте подкаталоги mex и tools в путь к MATLAB или скопируйте модуль Python astra в каталог site-packages Python. Нам требуется распространяемый пакет Microsoft Visual Studio 2015. Если он еще не установлен в вашей системе, он включен как vc_redist.x64.exe в ZIP-файл ASTRA.

    Linux/Windows, использование conda для python¶

    Требования: среда conda python с 64-разрядной версией Python 2.7, 3.5 или 3.6.

    На канале astra-toolbox для диспетчера пакетов conda доступны пакеты для ASTRA Toolbox. Чтобы использовать их, выполните следующее в среде conda.

    Linux, из исходников¶

    Для Matlab¶

    Требования: g++, boost, CUDA (5.5 или выше), Matlab (R2012a или выше)

    Добавьте $HOME/astra/matlab и его подкаталоги (tools, mex) в путь к matlab.

    Если вы хотите построить интерфейс Octave вместо интерфейса Matlab, укажите –enable-octave вместо –with-matlab=… . Файлы Octave будут установлены в $HOME/astra/octave .

    Примечание: каждая версия Matlab поддерживает только определенный диапазон версий g++. Несмотря на это, если у вас более новый g++ и вы получаете ошибки, связанные с отсутствием символов GLIBCXX_3.4.xx, часто можно обойти это требование, удалив версию libstdc++, предоставленную Matlab, в MATLAB_PATH/bin/glnx86 или MATLAB_PATH. /bin/glnxa64 (на свой страх и риск) или установка LD_PRELOAD=/usr/lib64/libstdc++.so.6 (или аналогичная) при запуске Matlab.

    Для Python¶

    Требования: g++, boost, CUDA (5.5 или выше), Python (2.7 или 3.x)

    Это установит ASTRA в вашу текущую среду Python.

    Windows, из исходного кода с использованием Visual Studio 2015¶

    Требования: Visual Studio 2015 (полная версия или сообщество), boost (недавняя версия), CUDA 8.0, Matlab (R2012a или выше) и/или WinPython 2.7/3.x.

    Использование Visual Studio IDE¶

    Установите переменную среды MATLAB_ROOT в место установки Matlab.

    Скопируйте заголовки boost в lib\include\boost (т. е. скопируйте подкаталог boost из исходного архива boost в lib\include), а библиотеки boost в lib\x64.

    Откройте файл astra_vc14.sln в Visual Studio.

    Выберите подходящую конфигурацию решения (обычно это Release_CUDA|x64).

    Создайте решение.

    Установите, скопировав AstraCuda64.dll и все файлы .mexw64 из bin\x64\Release_CUDA и весь каталог matlab\tools в каталог, который будет добавлен в ваш путь к matlab.

    Использование скриптов .bat в build\msvc¶

    Отредактируйте build_env.bat и настройте правильные каталоги.

    Запустите build_setup.bat, чтобы автоматически скопировать заголовки и библиотеки Boost.

    Для Matlab: запустите build_matlab.bat. Файлы .dll и .mexw64 будут находиться в папке bin\x64\Release_Cuda.

    Для Python 2.7/3.5: запустите build_python27.bat или build_python35.bat. ASTRA будет установлена ​​непосредственно в пакеты сайтов.

    Linux, сборка conda-пакетов¶

    Чтобы создать собственные пакеты conda для набора инструментов ASTRA, выполните следующие действия в среде conda:

    © Copyright 2010-2022, imec-Vision Lab, Университет Антверпена; 2014-2022, CWI, Амстердам

    Linux, без сомнения, является лучшей альтернативой Microsoft Windows с открытым исходным кодом, но можно ли запускать программы Windows в ОС на базе Linux?

    Пользователи, которые недавно перешли с Windows на Linux, часто задаются вопросом, смогут ли они запускать приложения и программы Windows в своей новой системе. Ответ на этот вопрос влияет на отношение пользователя к Linux в целом, поскольку операционные системы должны быть просты в использовании и в то же время приветствовать идею запуска файлов разных форматов.

    Прямой ответ на этот вопрос — да. Вы можете запускать EXE-файлы и другие программы Windows в Linux, и это не так сложно, как кажется.

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

    Исполняемые файлы в Windows и Linux

    Прежде чем запускать EXE-файлы в Linux, важно знать, что такое исполняемые файлы. Вообще говоря, исполняемый файл — это файл, содержащий команды для выполнения компьютером определенных инструкций (как написано в коде).

    В отличие от других типов файлов (текстовых файлов или PDF-файлов), исполняемый файл не читается компьютером. Вместо этого система компилирует такие файлы, а затем следует соответствующим инструкциям.

    Некоторые распространенные форматы исполняемых файлов включают:

    1. EXE, BIN и COM в Microsoft Windows
    2. DMG и APP на macOS
    3. OUT и AppImage в Linux

    Внутренние различия операционных систем (в основном системные вызовы и доступ к файлам) являются причиной того, что ОС не поддерживает все доступные исполняемые форматы. Но пользователи Linux могут легко решить эту проблему с помощью программного обеспечения уровня совместимости, такого как Wine, или гипервизора виртуальной машины, такого как VirtualBox.

    Способы запуска программ Windows в Linux

    Запуск приложения Windows в Linux — это не высшая математика. Вот различные способы запуска EXE-файлов в Linux:

    Использование уровня совместимости

    Уровни совместимости Windows могут помочь пользователям Linux запускать EXE-файлы в своей системе. Wine (сокращение от Wine Is Not an Emulator) – это популярный уровень совместимости с Windows, полностью оправдывающий свое название.

    В отличие от эмуляторов и виртуальных машин, Wine не запускает программу в среде, подобной Windows, созданной в системе Linux. Вместо этого он просто преобразует системные вызовы Windows в эквивалентные им команды POSIX.

    В целом уровни совместимости, такие как Wine, отвечают за преобразование системных вызовов, преобразование структуры каталогов и предоставление системных библиотек для конкретной ОС для программы.

    Установить и использовать Wine для запуска программ Windows в Linux очень просто. После установки вы можете ввести следующую команду для запуска EXE-файла с помощью Wine:

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

    Запуск Windows внутри виртуальной машины

    Еще один обходной путь — запускать EXE-файлы Windows с помощью виртуальных машин. Гипервизор виртуальной машины, такой как VirtualBox, позволяет пользователям устанавливать дополнительную операционную систему, которая работает в рамках их базовой ОС.

    Все, что вам нужно сделать, это установить VirtualBox или VMWare, создать новую виртуальную машину и настроить на ней Windows. Затем вы можете просто запустить виртуальную машину и запустить Windows внутри вашей ОС на базе Linux. Таким образом, вы можете запускать EXE-файлы и другие программы, как обычно, на компьютере только с Windows.

    Разработка кроссплатформенного программного обеспечения — это будущее

    Сейчас огромная доля доступного программного обеспечения ориентирована исключительно на одну операционную систему. Большинство приложений, которые вы можете найти, доступны исключительно для Windows, macOS, Linux или комбинации этих ОС. Редко выпадает возможность установить программное обеспечение, работающее во всех основных операционных системах.

    Но все это меняется с кроссплатформенной разработкой. Разработчики программного обеспечения сейчас создают приложения, которые могут работать на нескольких платформах. Spotify, медиаплеер VLC, Sublime Text и Visual Studio Code — вот некоторые примеры кроссплатформенного программного обеспечения, доступного для всех основных операционных систем.

    В этой статье описывается пример установки серверной части веб-приложения в ОС Astra Linux. Стандартный пакет ОС Astra Linux не включает сервер приложений Java и Apache Tomcat. Их можно загрузить с официальных сайтов Oracle и Apache Tomcat.

    ПРИМЕЧАНИЕ. Java не сертифицирован для использования в Astra Linux, рекомендуется использовать веб-сервер Apache. Подробнее см. в разделе «Настройка Apache для доступа к ресурсам веб-приложений».

    Выполните установку под пользователем с правами локального администратора.

    Веб-приложение устанавливается на ОС Linux с помощью установочного архива pp.war (общий для платформ x86 и x64). Процесс установки зависит от используемой версии Java. Инструкция содержит пример установки веб-приложения на веб-сервер Apache Tomcat 7 Java.

    Установите Java 7 или более позднюю версию. Информацию об установке Java на Debian-подобный дистрибутив можно найти в Интернете.

    Распакуйте архив Apache Tomcat 7 в домашний каталог пользователя. Архив должен находиться в домашнем каталоге пользователя (в терминале):

    Откройте файл tomcat-users.xml:

    sudo nano ~/ /conf/tomcat-users.xml

    Добавить пользователя с разрешениями менеджера графического интерфейса:

    Если размер архива веб-приложения pp.war превышает 50 Мб (лимит загрузки по умолчанию), отредактируйте доступный лимит. Для этого откройте файл: ~/ /webapps/manager/config/web.xml:

    sudo nano ~/ /webapps/manager/config/web.xml

    и измените доступный лимит:

    Запустите Apache Tomcat в терминале:

    ПРИМЕЧАНИЕ. Чтобы проверить производительность Apache Tomcat, откройте страницу localhost:8080/ в браузере.

    Перейдите к разделу WAR-файл для развертывания на открывшейся странице. Нажмите кнопку Обзор и укажите путь к файлу pp.war:

    Нажмите кнопку "Развернуть". Убедитесь, что приложение успешно установлено:

    В файле PP.xml добавьте ссылку на BI-сервер и идентификатор репозитория, к которому устанавливается подключение. Чтобы открыть файл, выполните команду в терминале:

    sudo gedit /var/lib/ /webapps/pp/config/PP.xml

    Если BI-сервер устанавливается с помощью инсталляционного пакета, строка выглядит следующим образом:

    Перезапустите Apache Tomcat, чтобы применить новую конфигурацию. Для этого выполните в терминале:

    Возможно ли это при использовании той же архитектуры? Например, если обе программы работают на архитектуре X86, можно ли будет запустить Windows .exe в Linux?

    7 ответов 7

    Исполняемый файл будет выполняться либо в Linux, либо в Windows, но не в обоих одновременно.

    Выполняется под Windows

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

    Прежде чем вы сможете начать, вам необходимо установить Wine.Шаги, необходимые для установки Wine, зависят от платформы Linux, на которой вы работаете. Вероятно, вы можете погуглить «Ubuntu install wine», если, например, вы устанавливаете Ubuntu.

    Установив Wine, вы сможете выполнять эти команды.

    Выполнить под Linux

    Если вы знаете, что этот файл работает под Linux, вам нужно будет выполнить следующие команды:

    Вам нужно изменить разрешения, чтобы разрешить всем пользователям выполнять этот файл (a+x). вы также можете разрешить только пользователю выполнять (u+x)

    Запустите программу, ./ указывает командной строке искать файл для выполнения по текущему пути (если «текущий» каталог не указан в переменной окружения $PATH.

    Операционная система (Windows или Linux) предоставляет службы приложениям. Например, в Windows и Linux будут функции, которые приложение может вызывать для доступа к файлам, доступа к сети, отображения объектов на экране и т. д.

    Разные операционные системы обеспечивают разные способы выполнения этих действий, поэтому приложение, которое делает это как Windows, не будет работать в Linux и наоборот, даже если архитектура ЦП одинакова.

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

    Это одна из основных причин, по которой один и тот же исполняемый файл не может запускаться изначально в разных операционных системах.

    @0xA3 Если вы обращаетесь к API для конкретной платформы, то да. Но по большей части это на самом деле не так. Реализация стандартной библиотеки C или C++ на самом деле очень проста, вам просто нужно повторно реализовать ошибки и перенаправить вызовы. Что требует много работы, так это другой формат файла (и API для конкретной платформы, поскольку их нужно заново реализовывать с нуля).

    @Let, я никогда не говорил, что ты должен это делать. Я указывал, что вы сказали «по большей части», программы не используют API-интерфейсы для конкретных платформ; на самом деле, большинство делает. Даже программы, использующие межплатформенные библиотеки, такие как GTK, по-прежнему косвенно используют специфичные для платформы API.

    Нет, разные операционные системы используют разные форматы (например, Windows использует PE, а Linux использует ELF). Кроме того, при компиляции ваша программа вызывает собственные методы ОС. Как уже упоминалось, вы можете изучить использование WINE. Он обеспечивает большинство функций для запуска бинарных файлов Windows в Linux.

    Существуют три основные причины, по которым файлы .exe не запускаются напрямую в Linux и почему исполняемый файл Linux не запускается напрямую в Windows.

    Во-первых, это системные вызовы. Системные вызовы почти по определению зависят от платформы. Однако не все системные вызовы выполняются одинаково. Существуют переносимые системные вызовы (например, определенные стандартной библиотекой C/C++) и непереносимые системные вызовы (например, определенные POSIX или Microsoft). Приложения, которые статически связаны во время компиляции с системными библиотеками, обнаружат, что часть кода, которая включена статически, вероятно, не будет правильно выполняться на целевой платформе из-за совершенно другого дизайна платформы. Приложения, которые динамически компонуются во время выполнения, могут работать с несколькими условиями: если это переносимые системные вызовы, существует таблица перевода между системными вызовами исходных двоичных файлов и системными вызовами целевой платформы; если это непереносимый системный вызов, должен быть уровень совместимости, который принимает системные вызовы исходной платформы и находит эквивалентный перевод в целевой платформе (что не всегда возможно 1 , разные платформы имеют различный набор функций, а некоторые эта функция не имеет смысла на другой платформе 2 ).

    Решение: Для запуска программы Windows в Linux Wine предоставляет реализацию системных вызовов Windows и системных библиотек Windows, а также распознает формат PE; Wine может запускать программы Windows в Linux без перекомпиляции. Для программы Linux в Windows Cygwin предоставляет реализацию системных вызовов POSIX в Windows и позволяет перекомпилировать программу, написанную для Linux, с использованием Cygwin GCC для запуска в системе Windows без изменений исходного кода. Из-за того, что большинство программ Linux имеют открытый исходный код, их легче перекомпилировать, чем идти по пути Wine, предоставляя бинарно-совместимый слой. Нет ничего невозможного в том, чтобы обеспечить уровень совместимости, подобный винному, однако способ Cygwin более надежен, и просто не так много возможностей, чтобы позволить программе Linux без открытого исходного кода быть легко перенесенной в Windows.

    Другой — исполняемый формат. Windows использует формат PE (Portable Executable), а Linux использует ELF (Executable and Linkable Format). Формат исполняемого файла содержит метаданные и определяет, как исполняемый файл должен загружаться и выполняться платформой.

    Решение: Вполне возможно написать преобразователь PE -> ELF или ELF -> PE; и, вероятно, это не должно быть слишком сложно сделать (предупреждение: я не знаком с фактическим форматом ни одного из них). Другой способ — написать исполняемый загрузчик, который может понимать PE-файлы (например, Wine предоставляет один) или исполняемый загрузчик, который может понимать ELF-файл (я полагаю, что дизайн Windows ограничивает возможность запуска файла, запускаемого двойным щелчком мыши, как исполняемого файла) < /p>

    Соглашение о вызовах системных вызовов. Linux и Windows имеют не только разный набор доступных системных вызовов, но и совершенно другое соглашение о вызовах системных вызовов. В Linux, чтобы сделать системный вызов, вы передаете номер системного вызова в регистр eax/rax и аргументы в остальные регистры, а затем делаете запрос на прерывание 0x80. В DOS вы также передаете аргументы в регистр, однако для каждой системной службы существует свой номер запроса на прерывание, поэтому вы не передаете номер системного вызова в eax/rax. Windows NT больше похожа на Linux, однако вместо 0x80 вы вызываете запрос на прерывание 0x2E, однако номер системного вызова все еще отличается (поэтому вам нужна таблица перевода номеров системных вызовов и, возможно, уровень совместимости).

    Решение. Даже если у вас нет самомодифицирующегося кода или вы пытаетесь выполнять данные как код или выполнять другие хитрые коды, все равно очень сложно (так же сложно, как решить проблему остановки) анализировать исполняемый файл, искать для всех запросов прерывания системных вызовов и переводить их в системные вызовы целевой платформы. Более простой способ — предоставить службу времени выполнения, которая будет обрабатывать запросы прерываний программы и перенаправлять их на системные вызовы целевой платформы 3 .

    Есть и другие причины, но я считаю, что эти три являются большими камнями преткновения.

    1 безопасность файловой системы приходит на ум, нет никакого способа перевести биты безопасности Linux и ACL Windows NTFS.

    2 Windows не может разветвить процесс; CreateProcess можно использовать для эмуляции fork, однако он теряет семантику копирования при записи. В Windows невозможно создать процесс копирования при записи.

    Читайте также: