Stub программа что это

Что такое stub.exe? Это безопасно или вирус? Как удалить или исправить это

Что такое stub.exe?

stub.exe это исполняемый файл, который является частью CuteFTP Программа, разработанная GlobalSCAPE, Программное обеспечение обычно о 3.63 MB по размеру.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Stub.exe безопасный, или это вирус или вредоносная программа?

Первое, что поможет вам определить, является ли тот или иной файл законным процессом Windows или вирусом, это местоположение самого исполняемого файла. Например, такой процесс, как stub.exe, должен запускаться из C: \ Program Files \ CuteFTP \ unwise32.exe, а не где-либо еще.

Если статус процесса «Проверенная подписывающая сторона» указан как «Невозможно проверить», вам следует взглянуть на процесс. Не все хорошие процессы Windows имеют метку проверенной подписи, но ни один из плохих.

Наиболее важные факты о stub.exe:

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

Найдите его местоположение (оно должно быть в C: \ ProgramData \ GlobalSCAPE \ CuteFTP) и сравните размер и т. Д. С приведенными выше фактами.

Если вы подозреваете, что можете быть заражены вирусом, вы должны немедленно попытаться это исправить. Чтобы удалить вирус stub.exe, вам необходимо Загрузите и установите приложение полной безопасности, например Malwarebytes., Обратите внимание, что не все инструменты могут обнаружить все типы вредоносных программ, поэтому вам может потребоваться попробовать несколько вариантов, прежде чем вы добьетесь успеха.

Могу ли я удалить или удалить stub.exe?

Не следует удалять безопасный исполняемый файл без уважительной причины, так как это может повлиять на производительность любых связанных программ, использующих этот файл. Не забывайте регулярно обновлять программное обеспечение и программы, чтобы избежать будущих проблем, вызванных поврежденными файлами. Что касается проблем с функциональностью программного обеспечения, проверяйте обновления драйверов и программного обеспечения чаще, чтобы избежать или вообще не возникало таких проблем.

Однако, если это не вирус, и вам необходимо удалить stub.exe, вы можете удалить CuteFTP со своего компьютера с помощью программы удаления, которая должна находиться по адресу: C: \ Program Files3 \ GLOBAL

1 \ CuteFTP \ UNWISE32.EXE C: \ Program Files3 \ GLOBAL

1 \ CuteFTP \ INSTALL.LOG. Если вы не можете найти его деинсталлятор, то вам может понадобиться удалить CuteFTP, чтобы полностью удалить stub.exe. Вы можете использовать функцию «Установка и удаление программ» на панели управления Windows.

Распространенные сообщения об ошибках в stub.exe

Наиболее распространенные ошибки stub.exe, которые могут возникнуть:

• «Ошибка приложения stub.exe».
• «Ошибка stub.exe».
• «stub.exe: столкнулся с проблемой и будет закрыт. Приносим извинения за неудобства».
• «stub.exe не является допустимым приложением Win32».
• «stub.exe не запущен».
• «stub.exe не найден».
• «Не удается найти файл stub.exe».
• «Ошибка запуска программы: stub.exe».
• «Неверный путь к приложению: stub.exe.»

Как исправить stub.exe

Если у вас возникла более серьезная проблема, постарайтесь запомнить последнее, что вы сделали, или последнее, что вы установили перед проблемой. Использовать resmon Команда для определения процессов, вызывающих вашу проблему. Даже в случае серьезных проблем вместо переустановки Windows вы должны попытаться восстановить вашу установку или, в случае Windows 8, выполнив команду DISM.exe / Online / Очистка-изображение / Восстановить здоровье, Это позволяет восстановить операционную систему без потери данных.

Чтобы помочь вам проанализировать процесс stub.exe на вашем компьютере, вам могут пригодиться следующие программы: Менеджер задач безопасности отображает все запущенные задачи Windows, включая встроенные скрытые процессы, такие как мониторинг клавиатуры и браузера или записи автозапуска. Единый рейтинг риска безопасности указывает на вероятность того, что это шпионское ПО, вредоносное ПО или потенциальный троянский конь. Это антивирус обнаруживает и удаляет со своего жесткого диска шпионское и рекламное ПО, трояны, кейлоггеры, вредоносное ПО и трекеры.

Обновлен декабрь 2021:

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

Загрузите или переустановите stub.exe

Вход в музей Мадам Тюссо не рекомендуется загружать замещающие exe-файлы с любых сайтов загрузки, так как они могут содержать вирусы и т. д. Если вам нужно скачать или переустановить stub.exe, мы рекомендуем переустановить основное приложение, связанное с ним. CuteFTP.

Информация об операционной системе

Ошибки stub.exe могут появляться в любых из нижеперечисленных операционных систем Microsoft Windows:

Источник

Stub программа что это

Глупая DOS загружает exe-файл, обнаруживает в его начале привычный для себя заголовок и исполняет stub-программу, ничего не зная о наличии в файле еще чего-то, кроме слов «а пошел ты туда-то и туда-то».

Важно! При компоновке stub-программы в командной строке компоновщика укажите недокументированную и загадочно звучащую опцию /KNOWEAS. Это опция вносит некие изменения в заголовок exe-файла. Если опцию не указать, то компоновка Windows-приложения со stub-программой окажется некорректна, о чем вы получите соответствующее предупреждение от линкера.

Подозреваем, что не все компоновщики поддерживают эту опцию. Однако link.exe из состава MS Developer Studio, конечно же, поддерживает.

Здесь настоящего ассемблерщика подстерегает серьезное разочарование. Проблема в следующем. Обычно при компоновке exe-программ для DOS в исполняемом файле резервируется довольно большое место под таблицу перемещения. Например, в порядке вещей, если таблица перемещения вольготно располагается между смещениями 1ch (конец заголовка) и 200h (начало сегмента кода). Даже если ваша stub-программа не содержит ни одного фрагмента, подлежащего перемещению, все равно 486 байт чистых нулей будет бессмысленно вбацано в нежное девственное тело вашего Windows-приложения. Задачка, стоит ли избегать такого варварского разбазаривания дискового пространства и как это сделать, предлагается для самостоятельного решения. Кое-какие идеи читайте далее.

Минимальная stub-программа. Заглянув внутрь исполняемого модуля какого-нибудь Windows-приложения, вы обнаружите, что стандартная stub-программа чаще всего занимает 128 байт. Можно ли уменьшить этот размер и до какой величины? Отвечаем: можно, до 64 байт.

Возьмите любой редактор бинарных файлов и создайте с его помощью вот такой файл:

Источник

Руководство по удалению stub.exe троян

stub.exe стоит по-настоящему опасных программ, участвующих в порождении ваш компьютер будет функционировать в крайне вялой манере. Вы, безусловно, отметить тот факт высокой загрузки процессора, вызванной этой вредоносной утилитой включена. Обратите внимание, что stub.exe играет активную роль в добыче цифровых валют на вашем компьютере, Однако, это делается в пользу других людей, не вы. Есть некоторые кибер-мошенники, которые инфицированы ваш компьютер с такого рода приложения и теперь пытаются использовать силу вашей системы для получения доходов в свои личные карманы. Это руководство предоставит вам полезную информацию, чтобы помочь вам избавиться от этой вредоносной программы полностью из системы.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

stub.exe приходит к вам в двух случаях: если вы были невнимательны, и установили троян вместе с программным обеспечением или, если ваш анти-вирус был слишком слаб и не смог найти угрозу.. Первый случай является общим для людей, которые опускают чтения требования к установке, они обычно получают зараженные элементы вместе с полезным. В случае, когда вы всегда читать их и не могу сказать, что некоторые из вашей деятельности в Интернете неверны, затем позволяет увидеть второй путь проникновения. Мы сожалеем о том, чтобы сказать, что, но ваше текущие защиты программного обеспечения, вероятно, будет слишком слабым, чтобы сделать работу Т.С.. Она не запрещает нежелательные программы и позволяет их установку. Если некоторые из этих вещей о вас, то вам необходимо надлежащее применение для повышения уровня безопасности.

Вторжение stub.exe в систему обычно происходит вместе с другими бесплатными приложениями, которые вы можете решить, чтобы сделать часть вашего компьютера. очевидно, он является обязательным, что вы всегда обращать пристальное внимание на то, что еще вы собираетесь сделать часть вашей системы. В случае, если вы будете читать информацию о некоторых сторонних программах, которые вы не планируете, чтобы часть вашей системы, убедитесь, что вы отмените такие параметры установки по умолчанию и перейти к продвинутым. К сожалению, пользователи часто невнимательно относятся к установке и, таким образом, разрешают ввод различного хлама и даже опасных утилиты.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Симптомы stub.exe трояна:

Скачать надежный инструмент для удаления stub.exe:

Подробная инструкция о том, как удалить stub.exe инфекции.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Профилактические советы для вашего ПК от быть с stub.exe повторного заражения в будущем:

GridinSoft Anti-Malware предлагает отличное решение, которое может помочь предотвратить заражение вашей системы вредоносным программным обеспечением в будущем. Эта функция называется “On-run Protection”. По умолчанию, она отключена после установки программного обеспечения. Чтобы включить её, пожалуйста, нажмите на “Защищать (Protect)” и нажмите на кнопку “Начать (Start)

Эта полезная функция может позволить людям предотвратить установку вредоносного программного обеспечения. Это означает, когда вы будете пытаться установить некоторые подозрительные приложения, «On-run Protection» будет блокировать эту попытку установки. ПРИМЕЧАНИЕ! Если пользователи хотят, чтобы потенциально опасные программы были установлены, Кнопка они могут выбрать «Игнорировать всегда». В случае, если вы хотите заблокировать вредоносную программу, вы должны выбрать «Блокировать всегда (Block always)».

Источник

PE (Portable Executable): На странных берегах

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Введение

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

PE формат — это формат исполняемых файлов всех 32- и 64- разрядных Windows систем. На данный момент существует два формата PE-файлов: PE32 и PE32+. PE32 формат для x86 систем, а PE32+ для x64. Описанные структуры можно наблюдать в заголовочном файле WINNT.h, который поставляется вместе SDK. Описание сего формата от microsoft можно скачать здесь, а я же пока оставлю здесь небольшое схематическое представление. Просто пробегитесь глазами, в процессе статьи вы начнёте схватывать и всё разложится по полочкам.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Любой файл, это есть лишь последовательность байт. А формат, это как специальная карта (сокровищ) для него. То есть показывает что где находится, где острова с кокосами, где с бананами, где песчаные берега, а где Сомалийские, куда лучше-бы не соваться. Так давайте же изучим широкие просторы этого океана. Отдать швартовы!

«Сейчас вы услышите грустную истори. о мальчике Бобби»
(Остров сокровищ)

Dos-Header (IMAGE_DOS_HEADER) и Dos-stub

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Dos заголовок. Это самая первая структура (самый первый островок который нам встретился на пути) в файле и она имеет размер 64 байта. В этой структуре наиболее важные поля это e_magic и e_lfnew. Посмотрим как выглядит структура:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Изучать все поля на данном этапе ни к чему, т.к. особой смысловой нагрузки они не несут. Рассмотрим только те, которые необходимы для загрузки и представляют особенный интерес. (Дальше и ниже по тексту, формат описания полей будет вида name: TYPE — description).

e_magic: WORD — сигнатура находящаяся по смещению 0 от начала файла и равная “MZ”. Поговаривают, что MZ сокращение от Марк Збиновски — самый злобный пират на всём водном пространстве ведущий разработчик MS DOS и EXE формата. Если данная сигнатура не равна MZ, то файл не загрузится.

e_lfnew: DWORD — смещение PE заголовка относительно начала файла. PE заголовок должен начинаться с сигнатуры (характерная запись/подпись) PE\x0\x0. PE заголовок может располагаться в любом месте файла. Если посмотреть на структуру, то можно увидеть, что e_lfnew находится по смещению 0x3C (60 в десятичной). То есть чтобы прочитать это значение, мы должны от указателя на начало файла (введём обозначение — ptrFile) “плюсануть” 60 байт и тогда мы встанем face to face перед e_lfnew. Читаем это значение (пусть будет peStep) и плюсуем к ptrFile значение peStep. Mission completed — мы на месте шеф, это должен быть PE заголовок. А узнать это наверняка мы можем сверив первые четыре байта этого заголовка. Как было сказано выше, они должны равняться PE\x0\x0.

После 64 первых байт файла стартует dos-stub (пираты также называют его dos заглушка). Эта область в памяти которая в большинстве своём забита нулями. (Взгляните ещё раз на структуру — заглушка лежит после dos-header(а) и перед PE заголовком) Служит она только для обратной совместимости, нынешним системам она ни к чему. В неё может быть записана мини версия dos программы ограниченную в 192 байта (256 — конец заглушки, 64 — размер dos заголовка). Но легче найти Access Point в Зимбабве, нежели такую программу. Стандартное поведение, если запустить программу на dos, то она выведет сообщения вида “This program cannot be run in DOS mode.” или “This program must be run under win32”. Если увидите эти строки, это значит что вы попали… в далёкий 85-ый.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

“-К чёрту деньги, я говорю о бумагах Флинта!”
(Остров сокровищ)

PE-Header (IMAGE_NT_HEADER)

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Прочитали e_lfnew, отступили от начала файла на peStep байт. Теперь мы может начинать анализировать PE заголовок. Это новый для нас остров и он должен располагаться на просторах следующих 0x18 байт. Структура представлена ниже:

Это интересная структура, т.к. она содержит в себе подструктуры. Если представить PE файл как океан, каждая структура это материк (или остров). На материках расположены государства, которые могут рассказать о своей территории. А рассказ складывается из истории отдельных городов (полей) в этом государстве. Так вот — NT Header — это материк, которой содержит такие страны, как Signature (город-государство), FileHeader, OptionalHeader. Как уже было сказано, Signature: DWORD — содержит 4-ёх байтовую сигнатуру, характеризующую формат файла. Рассмотрим что ещё может поведать нам этот материк.

File-Header (IMAGE_FILE_HEADER)

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

Я лишь сухо опишу данные поля, т.к. названия интуитивно понятные и представляют из себя непосредственные значения, а не VA, RVA, RAW и прочие страшные интригующие штуки, о которых пока, мы только слышали от старых пиратов. Хотя с RAW мы уже сталкивались — это как раз смещения относительно начала файла (их ещё называют сырыми указателями или file offset). То есть если мы имеем RAW адрес, это значит что нужно шагнуть от начала файла на RAW позиций (ptrFile + RAW). После можно начинать читать значения. Ярким примером данного вида является e_lfnew — что мы рассмотрели выше в Dos заголовке.

*Machine: WORD — это число (2 байта) задаёт архитектуру процессора, на которой данное приложение может выполняться.
NumberOfSections: DWORD — количество секций в файле. Секции (в дальнейшем будем называть таблицей секций) следуют сразу после заголовка (PE-Header). В документации сказано что количество секций ограничено числом 96.
TimeDateStamp: WORD — число хранящее дату и время создания файла.
PointerToSymbolTable: DWORD — смещение (RAW) до таблицы символов, а SizeOfOptionalHeader — это размер данной таблицы. Данная таблица призвана служить для хранения отладочной информации, но отряд не заметил потери бойца с самого начала службы. Чаще всего это поле зачищается нулями.
SIzeOfOptionHeader: WORD — размер опционального заголовка (что следует сразу за текущим) В документации указано, что для объектного файла он устанавливается в 0…
*Characteristics: WORD — характеристики файла.

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

Оставим этот остров! Нам нужно двигаться дальше. Ориентир — страна под названием Optional-Header.

“— Где карта, Билли? Мне нужна карта.”
(Остров сокровищ)

Optional-Header (IMAGE_OPTIONAL_HEADER)

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Название сего материка заголовка не очень удачное. Этот заголовок является обязательным и имеет 2 формата PE32 и PE32+ (IMAGE_OPTIONAL_HEADER32 и IMAGE_OPTIONAL_HEADER64 соответственно). Формат хранится в поле Magic: WORD. Заголовок содержит необходимую информацию для загрузки файла. Как всегда:

* Как всегда, мы изучим только основные поля, которые имеют наибольшее влияние на представление о загрузке и того, как двигаться дальше по файлу. Давайте условимся — в полях данной структуры, содержаться значения с VA (Virtual address) и RVA (Relative virtual address) адресами. Это уже адреса не такие как RAW, и их нужно уметь читать (точнее считать). Мы непременно научимся это делать, но только для начала разберём структуры, которые идут друг за другом, чтобы не запутаться. Пока просто запомните — это адреса, которые после расчётов, указывают на определённое место в файле. Также встретится новое понятие — выравнивание. Его мы рассмотрим в купе с RVA адресами, т.к. эти они довольно тесно связаны.

Рассмотрим что из себя представляет структура IMAGE_DATA_DIRECTORY:

Что мы имеем? Мы имеем массив из 16 элементов, каждый элемент которого, содержит адрес и размер (чего? как? зачем? всё через минуту). Встаёт вопрос чего именно это характеристики. Для этого, у microsoft имеется специальные константы для соответствия. Их можно увидеть в самом конце описания структуры. А пока:

Ага! Мы видим, что каждый элемент массива, отвечает за прикреплённую к нему таблицу. Но увы и ах, пока эти берега недосягаемы для нас, т.к. мы не умеем работаться с VA и RVA адресами. А для того чтобы научиться, нам нужно изучить что такое секции. Именно они расскажут о своей структуре и работе, после чего станет понятно для чего нужны VA, RVA и выравнивания. В рамках данной статьи, мы затронем только экспорт и иморт. Предназначение остальных полей можно найти в оф. документации, либо в книжках. Так вот. Собственно поля:

VirtualAddress: DWORD — RVA на таблицу, которой соответствует элемент массива.
Size: DWORD — размер таблицы в байтах.

Итак! Чтобы добраться до таких экзотических берегов как таблицы импорта, экспорта, ресурсов и прочих, нам необходимо пройти квест с секциями. Ну что ж юнга, взглянем на общую карту, определим где мы сейчас находимся и будем двигаться дальше:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

“- Ты низложен, Сильвер! Слезай с бочки!”
(Остров сокровищ)

Section-header (IMAGE_SECTION_HEADER)

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Сразу за массивом DataDirectory друг за другом идут секции. Таблица секций представляет из себя суверенное государство, которое делится на NumberOfSections городов. Каждый город имеет своё ремесло, свои права, а также размер в 0x28 байт. Количество секций указано в поле NumberOfSections, что хранится в File-header-е. Итак, рассмотрим структуру:

Name: BYTE[IMAGE_SIZEOF_SHORT_NAME] — название секции. На данный момент имеет длину в 8 символов.
VirtualSize: DWORD — размер секции в виртуальной памяти.
SizeOfRawData: DWORD — размер секции в файле.
VirtualAddress: DWORD — RVA адрес секции.
SizeOfRawData: DWORD — размер секции в файле. Должен быть кратен FileAligment.
PointerToRawData: DWORD — RAW смещение до начала секции. Также должен быть кратен FileAligment
Characteristics: DWORD — атрибуты доступа к секции и правила для её загрузки в вирт. память. Например атрибут для определения содержимого секции (иниц. данные, не инициал. данные, код). Или атрибуты доступа — чтение, запись, исполнение. Это не весь их спектр. Характеристики задаются константами из того-же WINNT.h, которые начинаются с IMAGE_SCN_. Более подробно ознакомится с атрибутами секций можно здесь. Также хорошо описаны атрибуты в книгах Криса Касперски — список литературы в конце статьи.

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Секции, это такая область, которая выгружается в виртуальную память и вся работа происходит непосредственно с этими данными. Адрес в виртуальной памяти, без всяких смещений называется Virtual address, сокращённо VA. Предпочитаемый адрес для загрузки приложения, задаётся в поле ImageBase. Это как точка, с которой начинается область приложения в виртуальной памяти. И относительно этой точки отсчитываются смещения RVA (Relative virtual address). То есть VA = ImageBase + RVA; ImageBase нам всегда известно и получив в своё распоряжение VA или RVA, мы можем выразить одно через другое.

Тут вроде освоились. Но это же виртуальная память! А мы то находимся в физической. Виртуальная память для нас сейчас это как путешествие в другие галактики, которые мы пока можем лишь только представлять. Так что в виртуальную память нам на данный момент не попасть, но мы можем узнать что там будет, ведь это взято из нашего файла.

Выравнивание

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

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

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Как можно заметить, секция выгружается в память не по своему размеру. Здесь используются выравнивания. Это значение, которому должны быть кратен размер секции в памяти. Если посмотреть на схему, то мы увидим, что размер секции 0x28, а выгружается в размере 0x50. Это происходит из-за размера выравнивания. 0x28 “не дотягивает” до 0x50 и как следствие, будет выгружена секция, а остальное пространство в размере 0x50-0x28 занулится. А если размер секции был бы больше размера выравнивания, то что? Например sectionSize = 0x78, а sectionAligment = 0x50, т.е. остался без изменений. В таком случае, секция занимала бы в памяти 0xA0 (0xA0 = 0x28 * 0x04) байт. То есть значение которое кратно sectionAligment и полностью кроет sectionSize. Следует отметить, что секции в файле выравниваются аналогичным образом, только на размер FileAligment. Получив необходимую базу, мы можем разобраться с тем, как конвертировать из RVA в RAW.

“Здесь вам не равнина, здесь климат иной.”
(В.С. Высоцкий)

Небольшой урок арифметики

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Перед тем как начать выполнение, какая то часть программы должна быть отправлена в адресное пространство процессора. Адресное пространство — это объём физически адресуемой процессором оперативной памяти. “Кусок” в адресном пространстве, куда выгружается программа называется виртуальным образом (virtual image). Образ характеризуется адресом базовой загрузки (Image base) и размером (Image size). Так вот VA (Virtual address) — это адрес относительно начала виртуальной памяти, а RVA (Relative Virtual Address) относительно места, куда была выгружена программа. Как узнать базовый адрес загрузки приложения? Для этого существует отдельное поле в опциональном заголовке под названием ImageBase. Это была небольшая прелюдия чтобы освежить в памяти. Теперь рассмотрим схематичное представление разных адресаций:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Дак как же всё таки прочитать информацию из файла, не выгружая его в виртуальную память? Для этого нужно конвертировать адреса в RAW формат. Тогда мы сможем внутри файла шагнуть на нужный нам участок и прочитать необходимые данные. Так как RVA — это адрес в виртуальной памяти, данные по которому были спроецированы из файла, то мы можем произвести обратный процесс. Для этого нам понадобится ключ девять на шестнадцать простая арифметика. Вот несколько формул:

Как видно, чтобы высчитать RAW, нам нужно определить секцию, которой принадлежит RVA. Для этого нужно пройти по всем секциям и проверить следующие условие:

Сложив все пазлы, получим вот такой листинг:

УРА! Разобрались. Теперь мы можем отправится в края ресурсов, библиотек импорта и экспорта и вообще куда душа желает. Мы ведь только что научились работать с новым видом адресации. В путь!

“-Неплохо, неплохо! Всё же они получили свой паёк на сегодня!”
(Остров сокровищ)

Export table

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

В самом первом элементе массива DataDirectory хранится RVA на таблицу экспорта, которая представлена структурой IMAGE_EXPORT_DIRECTORY. Эта таблица свойственна файлам динамических библиотек (.dll). Основной задачей таблицы является связь экспортируемых функций с их RVA. Описание представлено в оф. спецификикации:

Эта структура содержит три указателя на три разные таблицы. Это таблица имён (функций) (AddressOfNames), ординалов(AddressOfNamesOrdinals), адресов(AddressOfFunctions). В поле Name хранится RVA имени динамической библиотеки. Ординал — это как посредник, между таблицей имён и таблицей адресов, и представляет из себя массив индексов (размер индекса равен 2 байта). Для большей наглядности рассмотрим схему:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Рассмотрим пример. Допустим i-ый элемент массива имён указывает на название функции. Тогда адрес этой функции можно получить обратившись к i-му элементу в массиве адресов. Т.е. i — это ординал.

Внимание! Если вы взяли к примеру 2-ой элемент в таблице ординалов, это не значит 2 — это ординал для таблиц имён и адресов. Индексом является значение, хранящееся во втором элементе массива ординалов.

Количество значений в таблицах имён (NumberOfNames) и ординалов равны и не всегда совпадают с количеством элементов в таблице адресов (NumberOfFunctions).

“За мной пришли. Спасибо за внимание. Сейчас, должно быть, будут убивать!”
(Остров сокровищ)

Import table

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Таблица импорта неотъемлемая часть любого приложения, которая использует динамические библиотеки. Данная таблица помогает соотнести вызовы функций динамических библиотек с соответствующими адресами. Импорт может происходить в трёх разных режимах: стандартный, связывающем (bound import) и отложенном (delay import). Т.к. тема иморта достаточно многогранна и тянет на отдельную статью, я опишу только стандартный механизм, а остальные опишу только «скелетом».

Стандартный импорт — в DataDirectory под индексом IMAGE_DIRECTORY_ENTRY_IMPORT(=1) хранится таблица импорта. Она представляет собой массив из элементов типа IMAGE_IMPORT_DESCRIPTOR. Таблица импорта хранит (массивом) имена функций/ординалов и в какое место загрузчик должен записать эффективный адрес этой функций. Этот механизм не очень эффективен, т.к. откровенно говоря всё сводится к перебору всей таблицы экспорта для каждой необходимой функции.

Малость осветив методы импорта, перейдём непосредственно к таблице импорта.

“-Это моряк! Одежда у него была морская. — Да ну? А ты думал найти здесь епископа?”
(Остров сокровищ — Джон Сильвер)

Import-descriptor (IMAGE_IMPORT_DESCRIPTOR)

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Для того чтобы узнать координаты таблицы импорта, нам нужно обратиться к массиву DataDirectory. А именно к элементу IMAGE_DIRECTORY_ENTRY_IMPORT (=1). И прочитать RVA адрес таблицы. Вот общая схема пути, который требуется проделать:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Затем из RVA получаем RAW, в соответствии с формулами приведёнными выше, и затем “шагаем” по файлу. Теперь мы впритык перед массивом структур под названием IMAGE_IMPORT_DESCRIPTOR. Признаком конца массива служит “нулевая” структура.

Я не смог выудить на msdn ссылку на описание структуры, но вы можете наблюдать её в файле WINNT.h. Начнём разбираться.

OriginalFirstThunk: DWORD — RVA таблицы имён импорта (INT).
TimeDateStamp: DWORD — дата и время.
ForwarderChain: DWORD — индекс первого переправленного символа.
Name: DWORD — RVA строки с именем библиотеки.
FirstThunk: DWORD — RVA таблицы адресов импорта (IAT).

Тут всё несколько похоже на экспорт. Также таблица имён (INT) и и тоже рубище на нём адресов (IAT). Также RVA имени библиотеки. Только вот INT и IAT ссылаются на массив структур IMAGE_THUNK_DATA. Она представлена в двух формах — для 64- и для 32-ый систем и различаются только размером полей. Рассмотрим на примере x86:

Важно ответить, что дальнейшие действия зависят от старшего бита структуры. Если он установлен, то оставшиеся биты представляют из себя номер импортируемого символа (импорт по номеру). В противном случае (старший бит сброшен) оставшиеся биты задают RVA импортируемого символа (импорт по имени). Если мы имеем импорт по имени, то указатель хранит адрес на следующую структуру:

Здесь Hint — это номер функции, а Name — имя.

Для чего это всё? Все эти массивы, структуры… Рассмотрим для наглядности замечательную схему с exelab:

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

Что здесь происходит… Поле OriginalFirstThunk ссылается на массив, где хранится информация по импортируемым функциям. Поле FirstThunk ссылается на аналогичный массив той же размерности, но разве что заполняется он во время загрузки эффективным адресами функций. Т.е. загрузчик анализирует OriginalFirstThunk, определяет реальный адрес функции для каждого его элемента и заносит этот адрес в FirstThunk. Другими словами происходит связывание импортируемых символов.

“-Мне не нравится эта экспедиция! Мне не нравятся эти матросы! И вообще… что. А, да! Нет! Мне вообще ничего не нравится, сэр!”
(Остров сокровищ — Капитан Смоллетт)

За бортом

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

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

“-Скажи, Окорок, долго мы будем вилять, как маркитантская лодка? Мне до смерти надоел капитан. Хватит ему командовать! Я хочу жить в его каюте.”
(Остров сокровищ)

Заключение

Stub программа что это. Смотреть фото Stub программа что это. Смотреть картинку Stub программа что это. Картинка про Stub программа что это. Фото Stub программа что это

После того как мы вернулись из путешествия, немного подытожу, что мы увидели и что вынесли. Сегодня мы многое поняли А именно опишу процесс загрузки приложения в общих словах.

Для более чёткого понимания можно порекомендовать поизучать диаграммы. Это действительно даёт более полную картину происходящего внутри. В качестве примера могу предложить вот эту статью пользователя alizar или более общие схемы в гугле. Надеюсь вам понравилось наше путешествие.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *