Команда RUNDLL32 – выполнить в командной строке функцию, экспортированную библиотекой DLL.



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

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

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

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



RUNDLL32.EXE < имя_библиотеки_dll >,< точка входа функции > < аргументы функции >

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

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



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

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

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

rundll32 shell32,ShellAboutA

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

rundll32 shell32,shellabouta

завершится сообщением

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



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


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

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

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 но находится не в каталоге \Windows\System32 и реализует не стандартные функции оболочки системы, а функции подготовленными авторами вредоносного программного обеспечения (ПО).

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

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


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


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







Весь список команд CMD Windows