动态链接库函数启动器Rundll32 

rundll32原理与安全运维实践:DLL函数调用机制详解 rundll32.exe 是 Windows 系统中用于动态调用 DLL 导出函数的核心工具,其本质并非执行 DLL 文件,而是通过 LoadLibrary 和 GetProcAddress 实现标准化函数调用。它依托 DLL 导出表定位入口,严格遵循 CALLBACK 调用约定,具备轻量、免依赖、全版本兼容等技术价值。广泛应用于控制面板打开、回收站清空、网络配置等系统级 UI 自动化场景,也是企业无痕运维脚本与 IT 排障工具包的关键组件。理解其命令语法约束(如逗号分隔、无空格、必须带.dll扩展名)及 阅读详情


HMODULE g_hmodDLL;

BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
      )
{
 if (ul_reason_for_call == DLL_PROCESS_ATTACH)
        g_hmodDLL =HMODULE(hModule);

    return TRUE;
}

 

extern "C" __declspec(dllexport) void CALLBACK MagicDel(HWND,
                                                        HINSTANCE,
                                                        LPTSTR lpCmdLine,
                                                        int)
{
    // delete the executable file that created this process
    Sleep(2000);
    DeleteFile(lpCmdLine);
 
    // delete ourself
    char filenameDLL[MAX_PATH];
    GetModuleFileName(g_hmodDLL, filenameDLL, sizeof(filenameDLL));
 
    __asm
    {
   lea     eax, filenameDLL
   push    0
   push    0
   push    eax
   push    ExitProcess
   push    g_hmodDLL
   push    DeleteFile
   push    FreeLibrary
   ret
    }
}

extern   "C"   __declspec(dllexport) void __cdecl   MyEntry(HWND   hwnd,                 //   handle   to   owner   window  
               HINSTANCE   hinst,     //   instance   handle   for   the   DLL  
               LPTSTR   lpCmdLine,   //   string   the   DLL   will   parse  
               int   nCmdShow             //   show   state  
               )  
{  
 MessageBox(NULL,lpCmdLine,"",MB_OK);  
}  

 

 调用方法:
 rundll32.exe rdTest.dll,MyEntry "hello!"

 

The Run DLL utility (Rundll32.exe) included in Windows enables you to call functions exported from a 32-bit DLL. These functions must have the following syntax:

void CALLBACK EntryPoint(
  HWND hwnd,        // handle to owner window
  HINSTANCE hinst,  // instance handle for the DLL
  LPTSTR lpCmdLine, // string the DLL will parse
  int nCmdShow      // show state
);

Note that EntryPoint is a placeholder for the actual function name. For a list of possible show states, see WinMain.

The following is the command-line syntax for Rundll32:

rundll32 DllName,FunctionName [Arguments]
DllName
Specifies the name of the DLL. The name cannot contain spaces, commas, or quotation marks. The utility searches for the DLL using the search criteria documented for the LoadLibrary function. Therefore, it is best to use the short name and provide a full path for the DLL.
FunctionName
Specifies the name of the function to call in DllName. Requires a comma (without no spaces) between DllName and FunctionName.
Arguments
Optional arguments for FunctionName.

Rundll32 loads the specified DLL using LoadLibrary, obtains the address of the function using the GetProcAddress function, and calls the function with the specified arguments, if any. When the function returns, Rundll32 unloads the DLL and exits.

Windows NT/2000: It is possible to create a Unicode version of the function. Rundll32 first tries to find a function named EntryPointW. If it cannot find this function, it tries EntryPointA, then EntryPoint. To create a DLL that supports ANSI on Windows 95/98/Me and Unicode otherwise, export two functions: EntryPointW and EntryPoint.

 

参阅:

http://support.microsoft.com/kb/164787

http://blogs.msdn.com/b/oldnewthing/archive/2004/01/15/58973.aspx

【CSP-J/S】复赛注意事项 上机文件组织形式 每年/S 复赛都有很多同学因为一些小失误导致一年的努力付之东流。Tony老师整理了一些复赛容易踩坑的点,或许对你有帮助! 阅读详情

相关推荐

用5毫欧采样电阻实现高精度电流检测?数字可调电源控制板的硬件设计陷阱

本文深入探讨了在数字可调电源控制板设计中,如何利用5毫欧采样电阻实现高精度电流检测。从微小信号放大电路设计、采样电阻布局与热管理,到电源切换与电池管理电路优化,提供了全面的硬件设计解决方案和实用技巧,帮助工程师规避常见设计陷阱,提升系统性能。

wdx0123456的博客 1029

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

Rundll32是Windows操作系统中非常有用的一个工具,它可以用来加载DLL文件中的函数,还可以用来修复Windows系统中的一些问题。Windows操作系统是全球最流行的操作系统之一,但是在使用过程中,用户可能会遇到各种各样的问题,例如程序无法正常启动、系统崩溃等等。其中,[dll文件名]是需要加载的DLL文件的文件名,[函数名]是需要调用的函数的名称, [Arguments]是参数,一个字符串。然后执行命令,会增加一个名字为inetsvr的服务。需要注意的是,不同系统中命令的运行结果是不一样的。

kinghzking的专栏 6413

【5G演进】4G到5G演进之网络架构与协议栈

4G到5G演进之网络架构与协议栈

Learning makes me happy (0^◇^0) 5529

使用rundll32.exe运行dll函数

我们知道windows下dllj

错位竞争,单点突破。 1万+

海思Hi3516平台集成IMX214 Sensor实战:从I2C调试到VI通路构建

本文详细记录了在海思Hi3516平台上集成索尼IMX214图像传感器的完整实战过程。从硬件I2C通讯调试、驱动层适配,到上层VI通路构建与ISP配置,提供了系统性的排查步骤与代码修改要点,旨在帮助开发者快速打通从Sensor到屏幕的完整视频采集链路,解决集成过程中的常见问题。

tcp8optimizer的博客 595

数据结构实验1.2—高精度计算PI值(西工大)

这是数据结构第二题的题目,是让我们根据用户的需求来计算派的值 这是题目的详细描述,刚看到这道题的时候,我是真的头大,完全没有思路,于是查找了一些大佬的笔记后才开始编写 这是我在写这些代码是所运用到的数学反三角函数幂次展开式的知识。 下面是正确的代码以及我的一些见解,和需要注意的一些地方。希望能对你有所帮助。如有更加精简的算法,请在评论区留下你的算法!!!谢谢!!! #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdl

abcdef0623的博客 5831

第2章 cmd命令基础:执行动态链接库(rundll32)

摘要 本文介绍了Windows系统rundll32命令的用法,包括语法结构、执行系统功能(如打开控制面板、锁定主机、管理进程等)以及调用自定义DLL的方法。通过具体示例展示了常用系统功能的命令格式,并提供了自写DLL函数的编写规范与模板代码,强调导出函数需遵循特定参数格式。该命令广泛用于系统管理、配置和应用程序调用,是Windows环境下的实用工具。

李小咖·网安技术库 1348

ubuntu安装eigen3.3.7

查看已安装版本: gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h 或 gedit /usr/local/include/eigen3/Eigen/src/Core/util/Macros.h 卸载先前版本: sudo updatedb locate eigen3 得到eigen库的位置 卸载: sudo rm -rf /usr/include/eigen3 /usr/lib/cmake/eigen3 ...

reason的博客 1万+

rundll32.exe和regsvr32.exe

众所周知,DLL文件是不能独自运行的,需要被进程加载到其地址空间后才能执行。 那怎么运行一个DLL呢? 答案:可以借助Windows所提供的rundll32.exe或regsvr32.exe。 rundll32.exe 通过rundll32.exe可以直接调用DLL的导出函数来执行功能。 命令行:rundll32.exe DllName,FuncName [Arguments] 但被指定的导出函数有格式要求,导出函数的格式如下,函数参数列表中的pCommand就是通过[Arguments]传入的。 void

qq_42814021的博客 4357

Ribo-seq数据解析:从翻译效率计算到动态可视化分析

本文系统介绍了Ribo-seq(核糖体印迹测序)数据分析全流程,从核心的P-site定位、翻译效率计算,到差异翻译分析和动态可视化。重点阐述了如何利用Ribo-seq高分辨率数据揭示基因表达在翻译层面的精细调控,并提供了从数据处理到生物学解读的实用工具与避坑指南。

weixin_28559803的博客 421

LAMMPS实例教程—In文件详解

本博文主要介绍专栏 《LAMMPS实例教程—In文件详解》, 针对于 Lammps 可分析的物理过程进行讲解,提供 In 文件以及后处理方法,持续更新。 目前分为8个专题: 1)力学专题、2)传热专题、3)相变专题、4)界面专题、5)吸附专题、6)流动专题、7)物性专题以及8)基础理论专题。

Rockyoung 3万+

入门win32——MessageBox的使用

以下是参阅MSDN得到的小收获。 首先,MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。这个一般用在进程中出现某些错误,或者触发一些判断要反馈给用户。 函数声明 int MessageBox( HWND hWnd, LPCT

Loe_Pold的博客 5529

无人驾驶Autoware导读

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对无人驾驶Autoware介绍做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2397

Rundll32介绍和使用方法

Rundll32介绍和使用方法动态链接库函数启动器——Rundll32    经常听到有些朋友说:呀!系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对 rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘 DLL参数应用技巧。    

永不止步 1869

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

rundll32.exe介绍和使用方法

1. 动态链接库函数启动器——Rundll32       经常听到有些朋友说:呀!系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对 rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘 DLL参数应用技巧。2. Rundll32.exe和Run

麦田里的守望者 1832

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

rundll32.exe使用详解

一.Rundll32介绍和使用方法动态链接库函数启动器——Rundll32    经常听到有些朋友说:呀!系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对 rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘 DLL参数应用技巧。    

freegodlee的专栏 1234

rundll32 应用

Rundll32.exe是什么? 顾名思意,"执行32位的DLL文件"。它的作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。介绍一下Rundll32.exe这个文件,功能就是以命令行的方式调

gameWYD的专栏 813

巧用rundll32文件

动态链接库函数启动器——Rundll32 经常听到有些朋友说:呀!系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘DLL参数应用技巧。 Rundll32.exe和Rundl...

weixin_34378045的博客 194

rundll32.exe使用方法

一.Rundll32介绍和使用方法 动态链接库函数启动器——Rundll32    经常听到有些朋友说:系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘DLL参数应用技巧。     Rund...

weixin_30652879的博客 217

什么是RUNDLL.EXE

动态链接库函数启动器——Rundll32经常听到有些朋友说:呀!系统的注册表启动项目有rundll32.exe,系统进程也有rundll32.exe,是不是病毒呀?其实,这是对rundll32.exe接口不了解,它的原理非常简单,了解并掌握其原理对于我们平时的应用非常有用,如果能理解了原理,我们就能活学活用,自己挖掘DLL参数应用技巧。Rundll32.exe和Rundll....

weixin_34342207的博客 421

LOLBAS 项目详解:IEAdvpack.dll 的 INF/SCT 远程取执行与 RegisterOCX 载荷启动——rundll32 滥用技巧剖析

本文以 LOLBAS 仓库中 [Ieadvpack.dll.md](https://link.gitcode.com/i/b2f4004f62292fc1d79b6b26f9f19e23) 及权威元数据 [yml/OSLibraries/Ieadvpack.yml](https://link.gitcode.com/i/25035c7f5ad590a00c526e6e2fccabb7) 为核心,深

gitblog_00701的博客 208

开始→运行→输入的命令集锦

经常忘记,留个备份:开始→运行→输入的命令集锦 gpedit.msc-----组策略         sndrec32-------录音机 Nslookup-------IP地址侦测器      explorer-------打开资源管理器 logoff---------注销命令        tsshutdn-------60秒倒计时关机命令 lusrmgr.msc----本机用户和组   

islq's space 986
上一篇: VC++中调试Release版本
下一篇: 关于Lempel-Ziv压缩算法的笔记
SWenJing
博客等级 码龄18年 8粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值