El archivo RunDll (RunDll.exe - RunDll32.exe)

Ver el tema anterior Ver el tema siguiente Ir abajo

El archivo RunDll (RunDll.exe - RunDll32.exe)

Mensaje  Dark[Byte] el Vie Mayo 21, 2010 10:19 pm

______________________________________________________________________________________________

El archivo RunDll fue originalmemte diseñado para ser usado internamente por el Sistema Operativo Windows para una variedad de funciones DLL que son ejecutadas en segundo plano, osea no visibles para el usuario de la PC.
Sin embargo muchas DLL poseen "Entry Points" (Puntos de Entrada) lo que las hace accesible para uso externo, un ejemplo seria Shell32.dll que nos permite acceder a varios componentes del Panel de Control.
Asi que podemos considerar tambien RunDll una herramienta util para nuestra linea de comandos ya que a traves de esta podemos invocar una función exportada desde una DLL de 16 o 32 bits. La unica limitación es que solo podemos invocar funciones DLL programadas especificamente para eso.
Podemos utilizar RunDll desde el "Ejecutar" de Windows, pero como mIRC tiene su propia linea de comandos podemos acceder desde ahi directamente utilizando la instrucción "/Run" en mSL, y obiamente tambien lo podemos hacer desde un Script.


*** RunDll.exe o RunDll32.exe ? ***
Estamos hablando del mismo archivo pero en sus dos versiones, mientras que RunDll.exe carga y ejecuta DLLs en 16 Bits entonces RunDll32.exe carga y ejecuta DLLs en 32 Bits.
Los sistemas operativos Windows 9X/ME (Win 95,98 y ME) todavia tienen presente algunos archivos 16-Bit por lo cual usan RunDll.exe . En cambio Windows XP es un Sistema Operativo puramente 32-Bits por lo cual usa RunDll32.exe y entonces RunDll.exe no esta presente, y es el mismo caso para Windows NT4.0 y los Sistemas mas nuevos de Windows: Vista y Win7.
Este archivo normalmente se encuentra en C:\Windows\System32\, en windows usualmente se accede a esa ruta usando: %SYSTEM% .


*** Sintaxis ***
La sintaxis de utilizacion de este archivo en linea de comando es igual para cualquiera de las dos versiones, de aquí en más voy a usar RunDll32.exe como ejemplo:


RUNDLL32.EXE Parametros

RUNDLL32.EXE <nombre-DLL>,<punto-de-entrada> <argumentos-opcionales>

RUNDLL32.EXE SHELL32.DLL,Control_RunDLL desk.cpl,,0


Vemos que su uso es simple sin embargo hay que tener en cuenta algunas cosas a la hora de introducir estos parametros en la sintaxis:
-Cuando se especifica el nombre de la DLL esta sera buscada por RunDll32.exe en rutas estandar. Por lo
que se recomienda incluir la ruta completa de la DLL.
-El nombre de la DLL no puede contener comas, comillas o espacios, ademas de obiamente los caracteres
ilegales no permitidos en ningun archivo por Windows (\/:?*"2<>|). Se recomienda utilizar la version
corta del nombre de la DLL asi se evitan error por espacios o caracteres ilegales.
-No es una sintaxis flexible... por lo que la coma entre "<nombre-DLL>,<punto-de-entrada>" es
obligatoria y no puede haber ningun espacio en blanco entre la misma y el nombre de la DLL y el punto
de entrada... en pocas palabras la sintaxis es EXACTAMENTE como esta escrita.

Hay que advertir que normalmente RunDll32.exe no muestra ningun aviso de error en caso de que utilizemosmal su sintaxis o que introduscamos una DLL que no es valida. Usualmente una DLL no es valida simplemente porque no esta bien programada.


*** Funcionamiento ***
Para los más curiosos este es el orden de tareas que realiza RunDll32 cuando invocamos una DLL:

- Analiza la línea de comandos
- Carga una DLL especificada mediante el metodo LoadLibrary()
- Obtiene la dirección de la funcion <punto-de-entrada> mediante el metodo GetProcAddress()
- Llama la función <punto-de-entrada>, pasando el final de la línea de comandos, que incluye los <argumentos-opcionales>
- Cuando vuelve la función <punto-de-entrada>, Rundll32.exe descarga el archivo DLL antes de terminar


*** Ejemplos ***
Aca va una lista de funciones y tareas que podemos ejecutar con RunDll32.exe...


Para Agregar\Quitar Programas
RunDll32.exe shell32.dll,Control_RunDLL appwiz.cpl,,0

Panel de control
RunDll32.exe shell32.dll,Control_RunDLL

Borrar Archivos Temporales de Internet:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8

Borrar cookies:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2

Borrar Historial:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1

Borrar Contraseñas:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32

Propiedades de la Fecha:
RunDll32.exe shell32.dll,Control_RunDLL timedate.cpl

Administrador de Dispositivos:
RunDll32.exe devmgr.dll DeviceManager_Execute

Opciones de carpeta - Principal:
RunDll32.exe shell32.dll,Options_RunDLL 0

Opciones de carpeta - Tipos de archivos:
RunDll32.exe shell32.dll,Control_Options 2

Opciones de carpeta - Busqueda:
RunDll32.exe shell32.dll,Options_RunDLL 2

Hinbernar:
RunDll32.exe powrprof.dll,SetSuspendState

Internet Explorer’s - Propiedades:
Rundll32 Shell32.dll,ConBring up trol_RunDLL Inetcpl.cpl,,6

Propiedades del Teclado:
RunDll32.exe shell32.dll,Control_RunDLL main.cpl @1

Blockear Pantalla:
RunDll32.exe user32.dll,LockWorkStation

Propiedades del Mouse:
Rundll32 Shell32.dll,Control_RunDLL main.cpl @0,0

Botones del Mouse - Invertir el boton izquierdo al derecho:
Rundll32 User32.dll,SwapMouseButton

Conexiones de Red:
RunDll32.exe shell32.dll,Control_RunDLL ncpa.cpl

Open With Dialog Box:
Rundll32 Shell32.dll,OpenAs_RunDLL Any_File-name.ext

Impresora:
Rundll32 Printui.dll,PrintUIEntry /?

Opciones del Lenguaje:
Rundll32 Shell32.dll,Control_RunDLL Intl.cpl,,0

Nombres de Usuario y Contraseñas:
RunDll32.exe keymgr.dll,KRShowKeyMgr

Propiedades de la barra de tareas:
RunDll32.exe shell32.dll,Options_RunDLL 1

Remover\Liberar Hardware:
RunDll32.exe shell32.dll,Control_RunDLL hotplug.dll

Centro de Seguridad de Windows:
RunDll32.exe shell32.dll,Control_RunDLL wscui.cpl

Acerca de Windows:
RunDll32.exe SHELL32.DLL,ShellAboutW

Firewall de Windows:
RunDll32.exe shell32.dll,Control_RunDLL firewall.cpl


THE END
______________________________________________________________________________________________
GLOSARIO:
-DLL = Dynamic Link Library (Biblioteca de Enlace Dinamico), archivos con codigo ejecutable usados por el Sistema Operativo o por un programa.
-mSL = mIRC Scripting Language

NOTA:
-La mayoria de las funciones que podemos utilizar con RunDll32.exe en XP funcionan igual para Vista y 7, sin embargo
algunas quizas no y tampoco existe una regla general para esto asi que lo mejor es experimentar uno mismo.
______________________________________________________________________________________________
Escrito por DarkByte para #mIRC-Scripting IRC-Hispano.Org
avatar
Dark[Byte]
Admin

Mensajes : 13
Fecha de inscripción : 20/05/2010
Localización : Uruguay

Ver perfil de usuario http://mirc-scripting.foroes.org

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.