Rundll32 - функция DLL библиотеки повикване блог на прозорци

Rundll32 - командния ред помощна програма, която има за цел да заредите и стартирате функциите на 32-битови и 64-битови DLL библиотеки. Мнозина вярват, че това означава, rundll32 да тече DLL като изпълним молбата. В действителност, няма такова нещо като "DLL старт", защото тя не е изпълним в чист вид (като EXE). В DLL съдържа само функции (процедури), и следователно само функции могат да бъдат наречени. Следователно определянето на това, което rundll32.exe полезност се използва за изпълнение на функциите (процедури), съхранявани в DLL.






Rundll32 позволява достъп само до функциите / процедури в рамките на DLL, които са написани по определен начин. Не само това, наречена функции трябва да бъдат изнесени, така че те също трябва да отговарят на специфични изисквания към описанието на входни параметри. библиотечни функции, които не са маркирани като може да бъде изнесен, управлявани от rundll32 не могат.

Малцина знаят, че Rundll32 може да се използва за задействане на функции от всеки тип файл, построени на подобен принцип с библиотеки DLL: ActiveX елементи с .ocx разширение, Control Panel аплети с .cpl разширение, водачът с .drv разширение. Анализирайте, в свободното си време, структурата на тези файлове и да я сравни със структурата на DLL.

Твърди се, че rundll32 полезност първоначално е бил предназначен за вътрешно ползване от разработчиците на операционната система, която се използва от Windows да работи с ограничен брой система DLL функции.

Струва си да се обръща внимание на факта, че в Windows Vista / 7 и по-късно операционни системи, rundll32 полезност не се препоръчва за употреба и само включен само за да се поддържа съвместимост с по-стари приложения.

Причината за това се крие в отношението многобройните проблеми, свързани с използването на rundll32 в техните софтуерни среди. Както без rundll32, ще попитате вие? Оказва се, на Microsoft активно пише специални системни инструменти, които постепенно заменят функционалността на нашия любим на многобройни софтуер функционалност. Ето защо, от време на време в Windows 7 процеси все още може да се намери rundll32 процес, обаче, подобно явление се наблюдава по-малко и по-малко. )

Алгоритъмът на Rundll32

По принцип, както инструментът е един вид обвивка, Rundll32 алгоритъмът може да се опише по следния начин:

Как да видите пълния път старт Rundll32

Ако системата без видима причина изведнъж успя да намери работещ процес rundll32, и сте се чудили, и това, което е в действителност, функционалната полезност е започнала, можете да определите това с пълния път започнете rundll32 полезност. Преглед на пълния стартиране път, който е на параметрите на командния ред може да използват помощната програма за задача система за управление.






Извикайте "Task Manager" (Ctrl + Shift + Esc), отидете в менюто "View", изберете "Изберете колони .." и да превъртите надолу в списъка, превъртете до "командния ред" и отбележете квадратче, а след това щракнете върху OK.
Резултатът ще бъде появата на главния прозорец, диспечера на задачите за "команден ред" пълна гама старт rundll32.

Как да стартирате DLL файлове

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 на библиотеката. и му се даде следните параметри:

При създаване на изнесени функции (в примерите по-горе, това е псевдо-име EntryPoint) трябва да вземе предвид следните точки:

  1. Вместо поредица "EntryPoint", е желателно да се уточни точното име на функция. Имайте предвид, че "входна точка", използван програма rundll32, не зависи от функцията DllEntryPoint, който в 32-битови DLL библиотеки извършва обработката и уведомлението за свързване и изключване на потока. Това е входната точка на самата функция.
  2. Функция е е необходимо входната точка за програмата за rundll32 да се определи, като се използват призвание конвенция _stdcall на (в C ++ подразбиране _stdcall Използван атрибут стойност обратно повикване). В противен случай, по подразбиране ще се използва от друго призвание конвенция _cdecl. Това ще доведе до срив на работна програма rundll32 след извикването на тази функция.

Функция, която е входната точка, със следните параметри:

ID (дръжка) на основния прозорец, който обикновено се използва за създаване на прозорци зарежда функциите на DLL.

низ команда премина библиотеката. Този низ е последователност от символи, завършват с код 0.

режим на прозорец на дисплея на избраната библиотека. (Данните предава функция CreateProcess).

Пример създаване DLL изнесени функция

Написах един пример за езика на монтажа, така че не ме обвиняват :) В този език, аз по някакъв начин да изразят своите идеи в областта на програмирането. Той събира цялата работа чрез версията FASM компилатор за Windows (FASMW.EXE). В DLL, аз описан един единствен изнесен функция, наречена ShowErrorMessage. който показва грешка прозорец с посочените параметри. Testdll.asm ще създадете файл и добавете следното съдържание: