Что за программа rundll32

Команда RUNDLL32 (RUNDLL для 16-разрядных Windows) изначально разрабатывалась корпорацией Microsoft для внутреннего использования в качестве отладочного программного обеспечения и предназначалась для вызова API-функций, экспортируемых библиотеками DLL. Но поскольку RunDLL32 оказалась удобным и простым средством, предоставляющим реализовать системные возможности общего характера, в настоящее время она включена в состав всех дистрибутивов Windows и широко используется в качестве стандартного компонента системы. С помощью утилиты rundll32 можно выполнить любую API-функцию, описанную в библиотеке, как будто эта функция вызывается из программы, написанной для использования данной функции.

DLL — Dynamic Link Library — библиотека динамической компоновки, динамически подключаемая библиотека, которая может многократно использоваться разными программными приложениями. Описание библиотек и функций можно найти на сайте сети разработчиков Microsoft MSDN

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

Rundll32.exe Trojan Removal Guide

Формат командной строки RUNDLL32:

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

Примеры использования RUNDLL32

Одна из наиболее часто используемых библиотек – имеющаяся во всех версиях операционных систем (ОС) семейства Windows shell32.dll . Данная библиотека содержит несколько десятков функций, большинство из которых предназначено для получения информации о системе и системного управления.

rundll32.exe shell32.dll,ShellAboutA – отобразить сведения о Windows. Выполняется функция ShellAboutA из библиотеки shell32.dll . Расширения файлов набирать не обязательно.

Пример команды без расширений:

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

Ошибка в shell32.dll
Нет точки входа: shellAbouta

Rundll32 – нет точки входа.

Выполнение же команды RUNDLL32.EXE SHELL32.DLL,ShellAboutA закончится обычным отображением сведений о системе.

rundll32 shell32,Control_RunDLL — открыть окно «Панель управления»;

What Is Microsoft Windows Host Process Rundll32? : Tech Niche

rundll32 shell32,Control_RunDLL desk.cpl — открыть окно «Свойства Экрана» панели управления. Как и в предыдущем примере, вызывается функция Control_RunDLL библиотеки shel32.dll , но ей передается параметр desk.cpl ;

rundll32 shell32, RestartDialogEx — вызвать окно с запросом на перезагрузку Windows. Вместо функции RestartDialogEx можно использовать функцию RestartDialog однако, нужно учитывать тот факт, что последняя разрабатывалась для 16-битных Windows, и в тех случаях, когда в библиотеке присутствует функция с Ex , предпочтительнее использовать ее, во избежание проблем с совместимостью;

Некоторые библиотеки могут содержать функцию для отображения подсказки по использованию:

RUNDLL32 printui.dll,PrintUIEntry /? — отобразить справочную информацию по пользовательскому интерфейсу принтера.

Нужно отметить, что возможности утилиты rundll32.exe нередко используются вирусописатели, в частности для вызова внедренных в легальный код вредоносных функций, использования поддельных библиотек, например, загружаемых из каталога временных файлов пользователя и т.п. Другими словами, файл библиотеки имеет вполне легальное имя, например то же shell32.dll но находится не в каталоге WindowsSystem32 и реализует не стандартные функции оболочки системы, а функции подготовленными авторами вредоносного программного обеспечения (ПО).

Для получения информации об экспортируемых функциях библиотек сторонних производителей, можно использовать обычный текстовый редактор (Wordpad, например, позволяет читать текст в dll — файле и искать названия функций) или специализированное программное обеспечение, как например, DLL Export Viewer от Nirsoft.

Пример списка экспортируемых shell32.dll функций в среде Windows 10, полученного с помощью программы DLL Export Viewer :

DllExp.exe – просмотр списка экспортируемых функций библиотекой DLL.

Полный список или только выбранные функции можно сохранить в текстовом формате.

Сохранение списка экспортируемых функций библиотекой DLL в текстовом формате.

Подсвеченная курсором функция RestartDialog может использоваться для запроса на перезагрузку компьютера.

Естественно, экспортируемые библиотеками функции зависят от версии Windows и они не могут быть одинаковыми и в Windows XP, и в Windows 11. Рассматриваемые ниже примеры приведены для Windows 10/11

Элементы Панели Управления через shell32.dll

RUNDLL32 SHELL32, Control_RunDLL — открыть Панель Управления.

Элементы Панели управления представляют из себя файлы с расширением .cpl, находящиеся в папке WindowsSystem32. Для открытия какого-либо элемента используется конструкция

RUNDLL32 SHELL32, Control_RunDLL файл.cpl [параметры]

RUNDLL32 SHELL32, Control_RunDLL appwiz.cpl — Программы и компоненты.

Читайте также:
Что за программа спо справки бк

RUNDLL32 SHELL32, Control_RunDLL bthprops.cpl — Настройка Bluetooth.

RUNDLL32 SHELL32, Control_RunDLL desk.cpl — Настройки дисплея.

RUNDLL32 SHELL32, Control_RunDLL FireWall.cpl — Настройки Брандмауэра.

RUNDLL32 SHELL32, Control_RunDLL hdwwiz.cpl — Диспетчер устройств.

RUNDLL32 SHELL32, Control_RunDLL inetcpl.cpl — Настройки Интернет Проводника.

RUNDLL32 SHELL32, Control_RunDLL intl.cpl — Настройки языковых параметров.

RUNDLL32 SHELL32, Control_RunDLL irprops.cpl — Настройки инфракрасной связи.

RUNDLL32 SHELL32, Control_RunDLL joy.cpl — Настройка игровых устройств.

RUNDLL32 SHELL32, Control_RunDLL main.cpl — Настройки мыши.

RUNDLL32 SHELL32, Control_RunDLL mmsys.cpl — Настройки звука.

RUNDLL32 SHELL32, Control_RunDLL ncpa.cpl — Настройки сети.

RUNDLL32 SHELL32, Control_RunDLL powercfg.cpl — Электропитание

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl — Свойства Системы.

RUNDLL32 SHELL32, Control_RunDLL TabletPC.cpl — Перо и сенсорные устройства.

RUNDLL32 SHELL32, Control_RunDLL telephon.cpl — Телефонное или модемное соединение.

RUNDLL32 SHELL32, Control_RunDLL timedate.cpl — Дата и время.

RUNDLL32 SHELL32, Control_RunDLL wscui.cpl — Центр безопасности и обслуживания.

Для некоторых элементов Панели управления можно указать дополнительные параметры, например, открываемую вкладку:

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,1 — Свойства Системы – вкладка Имя компьютера.

RUNDLL32 SHELL32, Control_RunDLL sysdm.cpl,,2 — Свойства Системы – вкладка Оборудование.

И так далее. Аналогично задаются вкладки для ”Настройки мыши” main.cpl,,0 – 2

Две запятые – это отсутствующие параметры указателя (handle) родительского процесса и его иконки, которые нужны при программном вызове библиотеки .cpl и не нужны при запуске через Rundll32.

Кроме функции Control_RunDLL, использующейся для вызова объектов .cpl, можно использовать и другие, экспортируемые библиотекой shell32.dll

runDll32.exe shell32.dll,Options_RunDLL — Параметры Проводника — Общие

runDll32.exe shell32.dll,Options_RunDLL 1 — Персонализация – Панель задач.

runDll32.exe shell32.dll,Options_RunDLL 2 — Параметры Проводника — Поиск

runDll32.exe shell32.dll,Options_RunDLL 3 — Персонализация – Пуск.

runDll32.exe shell32.dll,Options_RunDLL 4 — Персонализация – Уведомления и действия.

rundll32 shell32,OpenAs_RunDLL — Вызов окна выбора программы для открытия файла.

rundll32 shell32,ShellAboutA [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке ANSI

rundll32 shell32,ShellAboutW [Text] – Отображение окна сведений о системе с необязательной пометкой Text в кодировке Unicode. Функции, заканчивающиеся на A или W, отличаются только используемой кодировкой.

rundll32 SHELL32.DLL,ShellExec_RunDLL explorer.exe %TEMP% — Открыть в Проводнике каталог временных файлов.

Rundll32 Shell32.dll,SHHelpShortcuts_RunDLL Connect — Вызов окна подключения сетевого диска.

Хочу добавить, что конструкция, многократно встречающаяся на просторах Интернета

rundll32 shell32, SHExitWindowsEx 0…8 не работает, поскольку в shell32.dll современных ОС Windows такой функции нет.

Отсутствие функции в библиотеке shell32.dll.

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

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

Источник: ab57.ru

Rundll32.exe — что это такое?

В рамках данной заметки, я расскажу вам что такое Rundll32.exe и для чего нужна эта программа, а так же про связанные с этим нюансы.

Многие пользователи привыкли к тому, что каждый процесс в операционной системе Windows имеет уникальное название. Поэтому информацию о программе достаточно легко найти в интернете. Так, что когда они сталкиваются с тем, что в диспетчере задач может отображаться несколько процессов с названием «Rundll32.exe», то это ставит их в неловкое положение. Тем более, что периодически антивирус может отображать сообщение, что в этой программе обнаружен вирус.

Но, обо всем по порядку.

Примечание: Заметка предназначена для начинающих и обычных пользователей.

Rundll32.exe - что это такое?

Rundll32.exe — это специальное приложение, входящее в состав операционной системы Windows и позволяющее запускать программы из dll файлов. Исходно, приложение располагается по пути «%WINDIR%System32rundll32.exe».

Таким образом, сама по себе программа rundll32 не является вирусом, хотя некоторые вредоносные программы могут ее подменять. Однако, чаще же всего вирусы просто создают программу с аналогичным названием в каких-либо иных каталогах, поэтому их не всегда просто обнаружить среди остальных процессов в диспетчере задач.

Зачем нужна эта программа? Суть достаточно проста. В dll файлах могут храниться не только часто используемые программные коды, но и полноценные программы. Однако, в Windows исполняемыми программами являются либо файлы с расширением «.exe», либо «.com». Поэтому, если вы щелкните дважды левой кнопкой мыши по любому файлу с расширением dll, то ничего не произойдет.

Но, как же тогда запускать эти программы? Как раз для этого и используются программа «Rundll32.exe». Ей на вход передается название dll файла, специальная функция для запуска и необходимые параметры.

Примечание: Из-за этой особенности, некоторые антивирусы отображают, что файл Rundll32 заражен, хотя на самом деле программа абсолютна безобидна, просто она запускает зараженную программу, находящуюся внутри dll файла.

Читайте также:
Программа abc что это

Примечание: Справедливости ради, стоит знать, что операционная система так же может запускать определенные файлы со скриптами (например, bat файлы), но обычные пользователи практически не используют их.

Какой формат запуска Rundll32.exe? В принципе, обычным пользователям вряд ли придется вручную запускать программы из dll файлов, однако полезно знать как эта самая dll указывается при запуске, чтобы в последствии, найдя ее в диспетчере задач, вы могли найти информацию о библиотеке, например, в интернете. Формат следующий:

rundll32.exe bibl.dll,funcname params

где rundll32.exe — это программа Windows, bibl.dll — это название программы (если название записано без полного пути, то это означает, что dll находится в том же каталоге, что и rundll32), funcname — это название функции внутри dll для запуска (кстати, ее так же стоит использовать при поиске в интернете), params — это параметры, которые передаются внутрь dll.

Как узнать какая dll была запущена с помощью Rundll32.exe? В принципе, это можно сделать разными методами. Например, можно использовать бесплатные диспетчеры процессов, которые по умолчанию отображают более детальную информацию, или же с помощью того же диспетчера задач, если ваша версия Windows 7 или выше. Думаю, вам, как обычным читателям, полезнее будет узнать о втором методе. И вот, что нужно сделать.

2. Перейдите во вкладку «Процессы».

3. В верхнем меню раскройте пункт «Вид» и выберите пункт «Выбрать столбцы. «.

4. В появившемся окне поставьте галочку напротив «Командная строка» и нажмите кнопку «ОК».

5. Теперь в основной части окна отобразиться колонка «Командная строка», где будет указаны параметры, с которыми была вызвана та или иная программа.

6. Вам лишь останется скопировать название dll файла и функции (к сожалению, это придется делать вручную, так как стандартный диспетчер задач Windows не позволяет копировать обычным образом), а затем посмотреть их в интернете.

Теперь, вы знаете что представляет собой Rundll32.exe, зачем нужна эта программа в Windows, а так же некоторые особенности.

Источник: ida-freewares.ru

RunDll32 — вызов функций библиотек DLL

RSS

Все мы прекрасно знаем, что в операционной системе Windows существуют функции/процедуры, размещаемые внутри динамических библиотек (DLL). Эта особенность является одним из основных отличительных черт современных операционных систем, и Windows тут не исключение.

Динамическая библиотека (DLL) — файл, содержащий исполняемый код (сгруппированный в процедуры/функции) либо данные-ресурсы (шрифты/иконки/иные графические примитивы). Фактически библиотека представляет собой способ разделения общего кода между многими приложениями системы.

Но у библиотек имеется одна характерная особенность: они не запускаются через привычные пользователям механизмы, применимые к исполняемым образам .exe (например, запуск двойным щелчком из проводника), вместо этого процедуры/функции/ресурсы библиотеки доступны для использования исключительно из кода приложений. Одним словом просто так вот щелкнуть в проводнике по .DLL-файлу и запустить его не получится. И все же, у специалиста/пользователя время от времени возникает необходимость воспользоваться функциями той или иной библиотеки, в этом случае имеется два основных пути:

  • Написать собственное приложение, которое будет использовать требуемые функции [той или иной библиотеки];
  • Воспользоваться специализированным средством (утилитой) командной строки rundll32.exe;

Очевидно, что в рамках данной заметки нам интересен именно второй подход. Для его реализации разработчики из MS создали своеобразный «стартер», который вызывает код [заданной] функции (процедуры), размещаемой в одной из доступных в системе библиотек, прямо из командной строки. Идея была реализована Microsoft в виде утилиты под названием rundll32.exe.
RunDll32 — [системная] утилита командной строки, разработанная для загрузки и запуска функций из 32/64-битных библиотек DLL. Тем не менее, ошибочно было бы считать, что утилита rundll32 является средством для «запуска DLL» по аналогии с исполняемым приложением, в действительности же невозможно «запустить DLL», поскольку это не исполняемый образ в классическом понимании (вроде .EXE-образов).

rundll32 позволяет получить доступ только к функциям/процедурам, которые были описаны надлежащим (определенным) образом: вызываемые функции должны быть экспортируемыми и должны удовлетворять специфичным требованиям к определению входных параметров. Функции библиотек, которые не подпадают по описанные требования, «запускаться» посредством rundll32 не будут.

Теоретически rundll32 может использоваться для запуска функций из любых типов файлов, по структуре идентичных с библиотеками DLL: элементов ActiveX (* .ocx ), апплетов панели управления (* .cpl ), драйверов (* .drv ). Бытует мнение, что когда-то функциональные особенности rundll32 были неявными, то есть «скрытыми» от пользователя системы, но при этом самой системой активно эксплуатирующимися. Не совсем понятное утверждение, поскольку у разработчиков никогда и не существовало проблем в том, чтобы набросать алгоритм запуска произвольных функций библиотек и выделить его в отдельный функционал, к тому же в Windows это основа основ. Со временем утилита rundll32 превратилась в достаточно продвинутое средство, и в определенный момент, по причине того, что программа предоставляла возможности общего характера, разработчики решили включить её в базовый комплект ОС в виде отдельной утилиты. В состав Microsoft Windows 95, Windows 98 и Windows Millennium входили программы rundll.exe и rundll32.exe , а в операционных системах Microsoft Windows NT 4.0, Windows 2000 и Windows XP, в сборку была включена единственная утилита с именем rundll32.exe .

Читайте также:
Что за программа ubuntu

Стоит обратить внимание на то, что в Windows Vista/7 и более поздних ОС, утилита rundll32 не рекомендуется к использованию и включена только лишь с целью сохранения совместимости со старыми сценариями/приложениями.

Причина подобного отношения кроется в многочисленных проблемах, связанных с использованием rundll32 в своих программных окружениях. Как же без rundll32, спросите Вы? Оказывается, Microsoft активно внедряет специализированные системные утилиты, которые постепенно заменяют функционал полюбившегося многим программного средства. Поэтому, время от времени в процессах Windows 7 можно таки встретить процесс rundll32 , однако встречается подобное явление всё реже и реже.

Утилита всегда размещается в каталоге %SystemRoot%System32 для 32-битных версий Windows 2000/XP/Vista/7+ и в каталогах %SystemRoot%System32 и %SystemRoot%SysWOW64 для 64-битных версий Windows Vista/7+. В случае обнаружения файла с именем rundll32.exe в любом другом каталоге, настоятельно рекомендуется удалить файл и просканировать станцию на наличие вирусов.

Алгоритм работы rundll32

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

  1. Вызывается функция LoadLibrary , которая загружает выбранную DLL;
  2. Вызывается функция GetProcAddress , для получения адреса точки входа вызываемой из библиотеки функции;
  3. Вызывается проверка соответствия функции специфическим требованиям;
  4. Вызывается сама функция и ей передаются входные параметры;
  5. Происходит выход из функции по завершению её работы;
  6. Библиотека DLL выгружается из памяти процесса.

Как увидеть полный путь запуска rundll32

Если в системе ни с того ни с сего вдруг удалось обнаружить запущенный процесс rundll32 , и вам стало интересно, а какой же, собственно, функционал утилита выполняет, то можно определить это по полному пути запуска утилиты rundll32 . Посмотреть полный путь запуска, то есть параметры командной строки можно при помощи системной утилиты Диспетчер задач Windows (Task Manager).
Вызовите «Диспетчер задач» ( Ctrl + Shift + Esc ), перейдите в меню «Вид», выберите пункт «Выбрать столбцы..» и пролистав список вниз, найдите пункт «Командная строка» и отметьте его чекбокс, затем нажмите ОК . Результатом будет появление в главном окне диспетчера задач в параметре «командная строка» полной строки запуска rundll32.

Командная строка rundll32

32-битные и 64-битные версии программы

В 64-битных версиях ОС семейства Windows присутствуют 2 варианта программы rundll32.exe :

  • 64-битная версия, расположенная в %SystemRoot%System32 ;
  • 32-битная версия, расположенная в %SystemRoot%SysWOW64 .

В 64-битной ОС, для загрузки 64-битной библиотеки DLL может быть использована 64-битная версия rundll32.exe , находящаяся в директории %SystemRoot%System32 . Напротив, 32-битные программы в 64-битной ОС, обращающиеся к %SystemRoot%System32 , в целях обеспечения совместимости будут перенаправлены в %SystemRoot%SysWOW64 и, соответственно, будут использовать уже 32-битную версию rundll32.exe .

Пример использования rundll32

Для запуска программы rundll32 используется синтаксис командной строки следующего вида:

В качестве примера предлагаю разобрать команду запуска апплета «Язык и региональные стандарты» панели управления, вкладка «Форматы»:

rundll32.exe shell32.dll,Control_RunDLL intl.cpl,,0

При выполнении данной команды утилита rundll32 вызовет функцию Control_RunDLL , находящуюся в библиотеке shell32.dll , и передаст ей следующие параметры:

Параметр Описание
hWnd Идентификатор (дескриптор) родительского окна, который обычно используется при создании окон в функциях загружаемой библиотеки DLL.
hInstance Дескриптор (заголовок экземпляра) выбранной библиотеки DLL. Иначе, стартовый адрес процесса DLL в адресном пространстве. В нашем случае — библиотеки shell32.dll .
lpCmdLine Командная строка, передаваемая библиотеке. То есть параметры, передаваемые самой библиотеке. В нашем случае intl.cpl,,0 ;
nCmdShow Режим отображения окон выбранной библиотеки. (данные, передаваемые функции CreateProcess ).

Теперь давайте отметим и некоторые требования к синтаксису rundll32 :

  • Параметр, описывающий точку входа вызываемой функции (метка EntryPoint ) чувствителен к регистру. Это означает, что значение Control_RunDLL не тоже самое что control_rundll . Довольно часто неправильное указание регистра символов вызываемой функции приводит к ошибкам отказа в обнаружении последних.
  • Функция (в приведенном выше примере — функция Control_RunDLL ) должна самостоятельно выполнять анализ командной строки и идентифицировать отдельные ее аргументы.
  • Утилиты rundll / rundll32 ищут указанную библиотеку DLL в стандартных местоположениях.

В 64-разрядных версиях Windows (начиная с Vista) системные библиотеки размещаются в трёх каталогах: %WinDir%System32 , %WinDir%SysWOW64 и %WinDir%WinSxS . Причем последний используется компонентной моделью (Side-by-Side).

Правила создания функций

Очевидно, что в создаваемую нами собственную библиотеку DLL необходимо поместить функцию со следующими входными параметрами (пример описания на Ассемблере):

Источник: datadump.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru